所以我有一個 main() 函式,它需要每 5 秒連續啟動 >20 個不同的行程,而無需等待它們完成,因為有些可能需要 5 分鐘以上才能完成。到目前為止,我已經使用過執行緒(沒有加入它們),但隨著活動執行緒數量的增加,GIL 最終會停止執行。我可以使用某種異步多處理嗎?
uj5u.com熱心網友回復:
您可以嘗試使用concurrent.future.ProcessPoolExecutor在多個行程中異步運行函式而不會超載您的電腦:
import time
from concurrent.futures import ProcessPoolExecutor
def background_func(task):
time.sleep(task)
return task
with ProcessPoolExecutor(max_workers=10) as pool:
for task in range(30):
r = pool.submit(background_func, task) # non-blocking operation
r.add_done_callback(lambda x: print(f"completed: {x.result()}"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523280.html
