J.E*_*E.Y 5 python python-module python-multiprocessing
在我的项目中,我有一长串要定价的交易,因此我将其分成多个块并将它们委托给 multiprocessing#Pool 进行处理。假设包装类称为Valuation,方法是pool_calculate () ,它看起来像:
multiprocessing.freeze_support()
p = multiprocessing.Pool() # default is a number of processes equal to the number of CPU cores
results = p.map(self.pooled_valuation_tasks, chunks)
p.close()
p.join()
Run Code Online (Sandbox Code Playgroud)
问题是我们必须为所有定价导入一个内部模块,比如magic。
import magic
class Valuation(object):
....
Run Code Online (Sandbox Code Playgroud)
该模块似乎没有传播到池工作人员中,错误消息如下所示:
Process SpawnPoolWorker-3:
Traceback (most recent call last):
File "c:\opt\magic0.0.46\PythonVenv\lib\multiprocessing\process.py", line 258, in _bootstrap
self.run()
File "c:\opt\magic0.0.46\PythonVenv\lib\multiprocessing\process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "c:\opt\magic0.0.46\PythonVenv\lib\multiprocessing\pool.py", line 108, in worker
task = get()
File "c:\opt\magic0.0.46\PythonVenv\lib\multiprocessing\queues.py", line 337, in get
return _ForkingPickler.loads(res)
ModuleNotFoundError: No module named 'magic.rec'
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙吗?
更新:
为了回答评论中的一些问题,提供更多详细信息:
这就是我实例化类并调用 func 的方式:
if __name__ == '__main__':
valu = Valuation(...)
valu.pool_calculate(...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
508 次 |
| 最近记录: |