Ami*_*mir 11 python multiprocessing spawn python-3.x python-multiprocessing
我可以使用multiprocessing.Process
start 方法运行后台函数fork
。出于某种原因,我需要这个子进程在运行时启动一个新环境。因此,我将 start 方法设置为spawn
viamultiprocessing.set_start_method('spawn')
并通过运行作业job.start()
,出现以下错误:
Can't pickle <class 'module'>: attribute lookup module on builtins failed
Run Code Online (Sandbox Code Playgroud)
但是,我不会在我调用的函数中使用pickle。我可能做错了什么?在spawn
模式下运行进程时,是否有我应该遵循的一般经验法则?
仅供参考:我在一台装有 Ubuntu 16.04 的机器上
\n\n有没有一个通用的经验法则...
\n
是的。您遇到了这个记录在案的限制:
\nhttps://docs.python.org/3/library/multiprocessing.html
\n\n\n有一些额外的限制不适用于 fork 启动方法。
\n更好的酸洗性
\n确保 Process 的所有参数。init () 是可腌制的。另外,如果您子类化 Process,请确保在调用 Process.start 方法时实例将是可挑选的。
\n
你正在 ubuntu 上运行,所以fork
可能是正确的答案。如果您需要解决不兼容的要求fork
,那么您将需要清楚地记录详细信息,作为选择改进解决方案的第一部分。
归档时间: |
|
查看次数: |
13117 次 |
最近记录: |