我有一些使用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的不同之处在于不允许我执行相同的代码?
答案 0 :(得分:0)
在3.7中运行“ main”时,我使用的解释器(IDLE)运行此脚本与多处理模块不兼容。它确实在文档中对此进行了指定。由于在Linux上仅切换到命令行版本,因此我的脚本很好。