现在我有一个for
循环遍历列表,通常这个列表是100-500项长。在for
循环中,每个项目打开一个新线程。所以现在我的代码看起来是这样的:Python线程在一个循环,但最大线程
threads = []
for item in items:
t = threading.Thread(target=myfunction, args=(item,))
threads.append(t)
t.start()
但我不希望每次启动一个新的线程,看到只需要每个线程几秒钟MAX执行MyFunction的。我想继续做我的循环,在参数中调用每个项目的功能。但是一旦完成就关闭线程,并让另一个线程接管。我想打开的最大线程数不少于3,不超过20个。虽然如果更容易,那么范围可能会有所不同。我只是不想在循环中打开每个项目的新线程。
对于那些很好奇,如果它很重要。 myfunction是我定义的一个函数,它使用urllib向站点发送post请求。
我是python的新手,但我并不是全新编码在一起。对于noob问题抱歉。
'threading.activeCount()'可以帮助你决定是否产生一个线程或者在那里执行'myfunction',然后将它传递给当前'item'。 – Pynchia
好吧。那么我的代码看起来像threading.activeCount()> 20,而不仅仅是执行myfunction,否则启动线程? – user1687621
是的,我已经添加了它作为答案,我花了一些时间来测试它 – Pynchia