Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于joblib的python简单并行计算_Python_Joblib - Fatal编程技术网

基于joblib的python简单并行计算

基于joblib的python简单并行计算,python,joblib,Python,Joblib,我举了一个例子。下面是我的代码的样子: from math import sqrt from joblib import Parallel, delayed import multiprocessing test = Parallel(n_jobs=2)(delayed(sqrt)(i ** 2) for i in range(10)) print(test) 它会产生以下错误消息: Attempting to do parallel computing without protecting

我举了一个例子。下面是我的代码的样子:

from math import sqrt
from joblib import Parallel, delayed
import multiprocessing

test = Parallel(n_jobs=2)(delayed(sqrt)(i ** 2) for i in range(10))
print(test)
它会产生以下错误消息:

Attempting to do parallel computing without protecting your import
on a system that does not support forking. To use parallel-computing 
in a script, you must protect you main loop using 
"if __name__ == '__main__'". Please see the joblib documentation on 
Parallel for more information

而且它运行的时间太长了。我遗漏了什么?

错误消息和BrenBran告诉您的是a)您应该阅读错误消息,b)您应该将代码组织为:

from math import sqrt
from joblib import Parallel, delayed
import multiprocessing

if __name__ == '__main__':
    test = Parallel(n_jobs=2)(delayed(sqrt)(i ** 2) for i in range(10))
    print(test)

barny

错误消息和BrenBran告诉您的是:a)您应该阅读错误消息,b)您应该组织代码,如下所示:

from math import sqrt
from joblib import Parallel, delayed
import multiprocessing

if __name__ == '__main__':
    test = Parallel(n_jobs=2)(delayed(sqrt)(i ** 2) for i in range(10))
    print(test)
嗯 巴尼

我必须将backend=“threading”添加到巴尼的代码中才能正常运行:

from math import sqrt
from joblib import Parallel, delayed
import multiprocessing

if __name__ == '__main__':
    test = Parallel(n_jobs=2, backend="threading")(delayed(sqrt)(i ** 2) for i in range(10))
print(test)
我必须将backend=“threading”添加到barny的代码中,才能正常运行:

from math import sqrt
from joblib import Parallel, delayed
import multiprocessing

if __name__ == '__main__':
    test = Parallel(n_jobs=2, backend="threading")(delayed(sqrt)(i ** 2) for i in range(10))
print(test)

您是否阅读了错误消息告诉您要阅读的文档?您是否阅读了错误消息告诉您要阅读的文档?我正在审阅文档,如果我们使用backend=“threading”,则可能导致python的全局解释器锁定。我正在审阅文档,如果我们使用backend=“threading”然后可能导致python的全局解释器锁。