在Python中,可以使用concurrent.futures
模塊中的ThreadPoolExecutor
類來創建和管理線程池。線程池可以幫助你更有效地利用系統資源,避免因為創建過多線程而導致的性能問題。
下面是一個簡單的示例,展示了如何使用ThreadPoolExecutor
來執行多個任務:
import concurrent.futures
import time
def task(n):
print(f"Task {n} started")
time.sleep(n) # 模擬任務執行時間
print(f"Task {n} completed")
return n * n
def main():
# 創建一個線程池,最多可以同時運行3個線程
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
# 提交任務到線程池
tasks = [executor.submit(task, i) for i in range(1, 6)]
# 獲取任務結果
for future in concurrent.futures.as_completed(tasks):
result = future.result()
print(f"Task result: {result}")
if __name__ == "__main__":
main()
在這個示例中,我們定義了一個名為task
的函數,它接受一個參數n
,模擬執行一個耗時n
秒的任務。在main
函數中,我們創建了一個最大工作線程數為3的線程池,然后提交了5個任務到線程池。線程池會自動分配任務給空閑的線程,并在任務完成后返回結果。
注意,with
語句用于確保線程池在執行完畢后正確關閉。這是一個很好的實踐,可以避免因為忘記關閉線程池而導致的資源泄漏問題。