在尝试在Python中创建嵌套子进程时,我观察到了这种行为。下面是父进程程序parent_process.py
:
import multiprocessing
import child_process
pool = multiprocessing.Pool(processes=4)
for i in range(4):
pool.apply_async(child_process.run, ())
pool.close()
pool.join()
父程序在下面的子程序child_process.py中调用“run”函数:import multiprocessing
def run():
pool = multiprocessing.Pool(processes=4)
print 'TEST!'
pool.close()
pool.join()
当我运行父程序时,没有任何输出并且程序很快退出。然而,如果将print 'TEST!'
移动到嵌套的子进程创建之前的一行,'TEST!'
会被打印4次。
由于子进程中的错误不会在屏幕上打印出来,这似乎表明当一个子进程创建它自己的嵌套子进程时,程序会崩溃。
有人能解释一下背后发生了什么吗?谢谢!
Pool
比启动一个更大的Pool
不能使你更快。 - CoMartelmultiprocessing.Process
,每个进程都启动一个Pool
。如果需要,我可以帮助您编写代码。 - CoMartel