考虑一个跨越多个进程或线程的 Python 脚本(我还没有决定哪个,我仍在试验)。我想加入在创建时间之后产生的所有进程/线程。为此,我使用列表作为线程池:
pool = []
for job in jobs:
j = Process(target=some_Function, args=(some_Arg, ))
j.start()
pool.append(j)
# Lots of code
for p in pool:
p.join()
do_Right_Before_Exiting()
sys.exit()
这种方法的问题是有很多很多进程,并且池就像内存泄漏一样。消除池可以节省大量内存,但我无法确保进程完成。我可以“破解”asleep(30)
让他们有时间完成,但我觉得这很丑陋且不可靠。
我如何将进程/线程加入到代码运行位置以外的点(可能加入到 C# 标签之类的东西,或加入另一个事件)?或者,我如何检查所有进程/线程是否已完成然后才继续?