現在我有一個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