我在windows上运行Python中的并行处理。 这是我的代码:
from joblib import Parallel,delayed def f(x): return sqrt(x) if __name__ == '__main__': a = Parallel(n_jobs=2)(delayed(f)(i) for i in range(10))
这里是错误信息:
Process PoolWorker-2: Process PoolWorker-1: Traceback (most recent call last): file "C:Usersyoyo__000.BIGBLACKAppDataLocalEnthoughtCanopyAppappdatacanopy-1.5.4.3105.win-x86_64libmultiprocessingprocess.py",line 258,in _bootstrap self.run() file "C:Usersyoyo__000.BIGBLACKAppDataLocalEnthoughtCanopyAppappdatacanopy-1.5.4.3105.win-x86_64libmultiprocessingprocess.py",line 114,in run self._target(*self._args,**self._kwargs) file "C:Usersyoyo__000.BIGBLACKAppDataLocalEnthoughtCanopyAppappdatacanopy-1.5.4.3105.win-x86_64libmultiprocessingpool.py",line 102,in worker task = get() file "C:Usersyoyo__000.BIGBLACKAppDataLocalEnthoughtCanopyUserlibsite-packagesjoblibpool.py",line 363,in get return recv() AttributeError: 'module' object has no attribute 'f'
使用>>将多个并行进程的输出传输到一个文件是否安全?
与windows群集上的并行Julia代码有关的问题
在windows *中的并行黄瓜/ Watir场景
cpu亲和力口罩(把线程放在不同的cpu上)
等待并行远程进程完成bash ssh
R中的doMC和foreach循环不工作
如何批量使用Image Magic批量转换多个子目录中的图像
你怎么能平行mmap来更快地读取文件?
XARGS,GREP和GNU并行
在linux shell脚本上并行化行(命令,进程…)
根据这个网站的问题是windows特定的:
是的:在linux下我们是分叉的,因此他们不需要腌制函数,而且工作正常。 在windows下,该功能需要被pickleable,即它需要从另一个文件导入。 这实际上是一个很好的做法:使模块推动重用。
我试过你的代码,它在linux下完美地工作。 在windows下,如果它是从脚本运行的,就像python script_with_your_code.py 。 但是在交互式Python会话中运行失败。 当我将f函数保存在单独的模块中并将其导入到交互式会话中时,它对我有用。
不工作:
互动会议:
>>> from math import sqrt >>> from joblib import Parallel,delayed >>> def f(x): ... return sqrt(x) >>> if __name__ == '__main__': ... a = Parallel(n_jobs=2)(delayed(f)(i) for i in range(10)) ... Process PoolWorker-1: Traceback (most recent call last): file "C:Python27libmultiprocessingprocess.py",in _bootstrap self.run() file "C:Python27libmultiprocessingprocess.py",**self._kwargs) file "C:Python27libmultiprocessingpool.py",in worker task = get() file "C:Python27libsite-packagesjoblibpool.py",line 359,in get return recv() AttributeError: 'module' object has no attribute 'f'
加工:
fun.py
from math import sqrt def f(x): return sqrt(x)
互动会议:
>>> from joblib import Parallel,delayed >>> from fun import f >>> if __name__ == '__main__': ... a = Parallel(n_jobs=2)(delayed(f)(i) for i in range(10)) ... >>> a [0.0,1.0,1.4142135623730951,1.7320508075688772,2.0,2.23606797749979,2.449489742783178,2.6457513110645907,2.8284271247461903,3.0]
总结以上是内存溢出为你收集整理的python joblib在Windows平行并不工作甚至“if __name__ =='__main__':”被添加全部内容,希望文章能够帮你解决python joblib在Windows平行并不工作甚至“if __name__ =='__main__':”被添加所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)