我在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场景
等待并行远程进程完成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]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。