加入以后的活动

时间:2013-09-17 07:16:21

标签: python multithreading process

考虑一个跨越多个进程或线程的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()

这种方法的问题在于有很多很多进程,池就像内存泄漏一样。消除池可以节省大量内存,但我无法确保流程完成。我可以“破解”一个sleep(30)给他们时间来完成,但我发现这个丑陋且不可靠。

我如何将进程/线程加入到运行代码之外的其他位置(可能加入C#标签或加入其他事件)?或者,我怎么可能检查所有进程/线程是否已完成,然后才进行?

1 个答案:

答案 0 :(得分:0)

如果你的线程数组占用太多内存,我认为你有太多的线程。尝试将作业分成8个线程,看看是否能改善这些。

大多数人的核心数不超过8个。