多处理进程不是在Python 3.7中加入,而是在3.5中

时间:2019-08-21 16:29:08

标签: python-3.x multiprocessing

我有一些使用Python中的多处理模块的代码(见下文)。

import multiprocessing

p1 = multiprocessing.Process(target=func1, args=(id,rootdir))
p2 = multiprocessing.Process(target=func2, args=(id,rootdir))
p3 = multiprocessing.Process(target=func3, args=(id,rootdir))

jobs = [p1,p2,p3]

for job in jobs:
    job.start()

#won't join in python 3.7 but will in 3.5
for job in jobs:
    job.join()

print ('Finished tasks')

此代码在Python 3.5上可以很好地执行。但是,在Python 3.7上,进程开始但未加入。相反,发生的事情是Python试图杀死主程序。如果我不让它杀死自己,它会无限期地挂起。如果我取消它,程序将自行终止。

Python 3.7的不同之处在于不允许我执行相同的代码?

1 个答案:

答案 0 :(得分:0)

在3.7中运行“ main”时,我使用的解释器(IDLE)运行此脚本与多处理模块不兼容。它确实在文档中对此进行了指定。由于在Linux上仅切换到命令行版本,因此我的脚本很好。