我正在使用joblib并行化我的 python 3.5 代码。
如果我做:
from modules import f
from joblib import Parallel, delayed
if __name__ == '__main__':
Parallel( n_jobs = n_jobs,backend = "multiprocessing")(delayed(f)(i) for i in range( 10 ))
Run Code Online (Sandbox Code Playgroud)
代码不起作用。反而:
from joblib import Parallel, delayed
def f( i ):
# my func ...
if __name__ == '__main__':
Parallel( n_jobs = n_jobs, backend = "multiprocessing")(delayed(f)(i) for i in range(10))
Run Code Online (Sandbox Code Playgroud)
这有效!
有人可以解释为什么我必须将所有函数放在同一个脚本中吗?
这真的不切实际,因为在模块中有很多我编码的函数,我不想在主脚本中复制/粘贴。