0

考虑一个跨越多个进程或线程的 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# 标签之类的东西,或加入另一个事件)?或者,我如何检查所有进程/线程是否已完成然后才继续?

4

1 回答 1

0

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

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

于 2013-09-17T07:19:27.647 回答