首页 > 解决方案 > Python 3.7.7 子解释器在 multiprocessing.Process 失败

问题描述

假设官方文档(The Process 类)中的以下 python 程序:

from multiprocessing import Process

def f(name):
    print('hello', name)

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

在我的Windows机器上针对我的3.7.7解释器运行此代码可以正常工作,没有任何问题。但是,对创建的子解释器运行相同的代码失败并出现以下错误(实际上没有异常,以下错误只会打印到控制台):C++

无法识别的选项'-c'

我假设这个错误的原因可以在spawn.py中找到(在多处理模块中,第 89 行):

...
return [_python_exe] + opts + ['-c', prog, '--multiprocessing-fork']
...

我可以通过Popen创建我的新流程。这可行,但生成的进程应该是子进程,而不是完全独立的进程。

我的问题:

为什么会出现这个错误?有没有办法通过子解释器在子解释器中生成子进程multiprocessing.Process

谢谢!

更新 1

正如建议的那样,添加freeze_support修复了错误,但出现了一个新错误:

无法识别的选项“--multiprocessing-fork”

标签: pythonmultiprocessingcythoncpython

解决方案


推荐阅读