gpt4 book ai didi

Python 多处理不断生成 pythonw.exe 进程而不做任何实际工作

转载 作者:太空狗 更新时间:2023-10-29 17:01:24 25 4
gpt4 key购买 nike

我不明白为什么这么简单的代码

# file: mp.py
from multiprocessing import Process
import sys

def func(x):
print 'works ', x + 2
sys.stdout.flush()

p = Process(target= func, args= (2, ))
p.start()
p.join()
p.terminate()
print 'done'
sys.stdout.flush()

连续创建“pythonw.exe”进程并且它不打印任何东西,即使我从命令行运行它也是如此:

python mp.py

我在 32 位和 64 位 Windows 7 上运行最新的 Python 2.6

最佳答案

您需要protect then entry point of the program by using if __name__ == '__main__': .

这是 Windows 特有的问题。在 Windows 上,您的模块必须导入到新的 Python 解释器中才能访问您的目标代码。如果你不停止这个运行启动代码的新解释器,它会产生另一个 child ,然后会产生另一个 child ,直到它是pythonw.exe。目之所及的过程。

其他平台使用 os.fork() 启动子进程,这样就没有重新导入模块的问题。

因此您的代码需要如下所示:

from multiprocessing import Process
import sys

def func(x):
print 'works ', x + 2
sys.stdout.flush()

if __name__ == '__main__':
p = Process(target= func, args= (2, ))
p.start()
p.join()
p.terminate()
print 'done'
sys.stdout.flush()

关于Python 多处理不断生成 pythonw.exe 进程而不做任何实际工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com