問題一覧に戻る
上級パフォーマンスと並行処理
問題118: concurrent.futures
concurrent.futuresモジュールは、スレッドとプロセスの両方に対して統一的なインターフェースを提供します。ThreadPoolExecutorとProcessPoolExecutorを使い、submit()でタスクを送信し、result()で結果を取得します。as_completed()を使えば、完了順に結果を処理できます。
# concurrent.futures
from concurrent.futures import
import time
# タスク関数
def task(n):
time.sleep(0.5)
return n * 2
# エグゼキューターを使用
with (max_workers=3) as executor:
# タスクを送信
futures = [executor.(task, i) for i in range(5)]
# 結果を取得
for future in futures:
result = future.()
print(f"Result: {result}")