gpt4 book ai didi

循环中的 Python 线程但具有最大线程

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:45 24 4
gpt4 key购买 nike

现在我有一个 for 循环遍历一个列表,通常这个列表有 100-500 个项目。在 for 循环中,为每个项目打开一个新线程。所以现在我的代码看起来像这样:

    threads = []
for item in items:
t = threading.Thread(target=myfunction, args=(item,))
threads.append(t)
t.start()

但是我不想为每个线程启动一个新线程,因为每个线程最多只需要几秒钟来执行 myfunction。我仍然想做我的循环,用参数中的每个项目调用 myfunction。但是一旦完成就关闭线程,并让另一个线程接管。我想打开的最大线程数不少于 3,不超过 20。尽管如果它更容易,该范围可能会有所不同。我只是不想为循环中的每个项目打开一个新线程。

对于那些好奇的人,如果这很重要。 myfunction 是我定义的一个函数,它使用 urllib 向网站发送发布请求。

我是 python 的新手,但我对一起编码并不陌生。抱歉这个菜鸟问题。

最佳答案

我认为您正在寻找一个线程池来解决您的问题。

this question 的答案详细说明一些可能的解决方案。

最简单的一个(假设 python3 或 pypi 中的反向端口)是:

from concurrent.futures import ThreadPoolExecutor

executor = ThreadPoolExecutor(max_workers=10)
futures = []
for item in items:
a = executor.submit(myfunction, item)
futures.append(a)

这将使用 10 个线程为所有项目执行 myfunction。您可以稍后使用 future 列表等待调用完成。

关于循环中的 Python 线程但具有最大线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30812747/

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