Python 参加以后的活动

Python 参加以后的活动,python,multithreading,process,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_Righ

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

如果线程数组占用太多内存,我想你的线太多了。尝试将作业仅划分为8个线程,看看这是否会改善情况


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

我知道这似乎太多了,实际上我使用一个信号量一次只启动这么多线程。但这并没有解决问题的关键:以后再加入。这意味着什么?你为什么想要加入?我重读了你的问题,不明白。为什么不使用真正的线程/进程池呢?