gpt4 book ai didi

python - 一个让我知道至少 1 已完成的线程池?

转载 作者:太空宇宙 更新时间:2023-11-04 01:42:37 25 4
gpt4 key购买 nike

我需要在 python 中使用线程池,并且我希望能够知道至少 1 个线程或“允许的最大线程数”何时完成,以便在我仍然需要做某事时再次启动它。

我一直在使用这样的东西:

def doSomethingWith(dataforthread):
dostuff()
i = i-1 #thread has finished

i = 0
poolSize = 5
threads = []
data = #array of data
while len(data):
while True:
if i<poolSize: #if started threads is < poolSize start new thread
dataforthread = data.pop(0)
i = i+1
thread = doSomethingWith(dataforthread)
thread.start()
threads.append(thread)
else:
break
for t in threads: #wait for ALL threads (I ONLY WANT TO WAIT FOR 1 [any])
t.join()

据我了解,我的代码打开了 5 个线程,然后等待所有线程完成后再启动新线程,直到数据被消耗。但我真正想要做的是在其中一个线程完成并且池中有一个新线程的“可用位置”时立即启动一个新线程。

我一直在读this ,但我认为这与我的代码有相同的问题(不确定,我是 python 的新手,但通过查看 joinAll() 看起来像那样)。

有人可以举例说明我正在努力实现什么吗?

我的意思是当 i 小于 poolSize 时立即检测,启动新线程直到 i=poolSize 并这样做直到数据被消耗。

最佳答案

正如文章作者提到的和@getekha 强调的那样,Python 中的线程池无法完成与其他语言中完全相同的事情。如果您需要并行性,您应该查看 multiprocessing module .除其他外,它还有这些方便的 QueuePool结构体。此外,还有 an accepted PEP for "futures"您可能想要监控的内容。

关于python - 一个让我知道至少 1 已完成的线程池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com