在Python中,可以使用concurrent.futures
模塊來實現線程池并發多任務。concurrent.futures
模塊提供了ThreadPoolExecutor
類來創建線程池,并且提供了一些方法來提交任務并獲取結果。
下面是一個簡單的示例代碼,演示了如何使用線程池并發執行多個任務:
import concurrent.futures
def task(n):
# 執行任務的函數,這里簡單地打印任務編號
print(f"Task {n} executed")
return n
# 創建一個線程池,最多同時執行2個線程
with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor:
# 提交任務給線程池并獲取Future對象
futures = [executor.submit(task, i) for i in range(5)]
# 獲取任務的執行結果
for future in concurrent.futures.as_completed(futures):
result = future.result()
print(f"Task {result} completed")
在這個示例中,我們首先定義了一個task
函數,這個函數表示我們要執行的任務。然后,通過創建ThreadPoolExecutor
對象來創建一個線程池,指定最多同時執行2個線程。接下來,我們使用executor.submit()
方法將多個任務提交給線程池,并得到了一個Future對象的列表。最后,我們使用concurrent.futures.as_completed()
方法來循環迭代這些Future對象,并使用result()
方法獲取任務的執行結果。
注意,ThreadPoolExecutor
類還提供了其他方法,如map()
方法可以用來將一個可迭代對象中的元素分發給線程池并獲取結果。另外,還可以使用submit()
方法的timeout
參數來設置超時時間,避免任務執行時間過長導致阻塞。
總結起來,使用concurrent.futures
模塊的ThreadPoolExecutor
類可以很方便地實現線程池并發多任務。