Pythonのconcurrent.futures
モジュールは、非同期に呼び出し可能なオブジェクトを実行するための高レベルインターフェースを提供します。このモジュールは、スレッドを使用したThreadPoolExecutor
、または別のプロセスを使用したProcessPoolExecutor
で非同期実行を行うことができます。両者は同じインターフェースを実装しており、そのインターフェースは抽象的なExecutor
クラスによって定義されています。
以下に、concurrent.futures
を使用した並列タスクの実行方法を示します。
from concurrent.futures import ThreadPoolExecutor
def task(v):
print(f"{v} start")
time.sleep(1.0)
print(f"{v} end")
return v * 2
with ThreadPoolExecutor(max_workers=2) as executor:
futures = []
for i in range(5):
futures.append(executor.submit(task, i))
print([f.result() for f in futures])
このコードでは、ThreadPoolExecutor
を使用して最大2つのタスクを同時に実行します。executor.submit
メソッドを使用してタスクを追加し、その結果をFuture
オブジェクトとして受け取ります。最後に、すべてのFuture
オブジェクトの結果をリストとして出力します。
このように、Pythonのconcurrent.futures
モジュールを使用すると、複数のタスクを簡単に並列に実行することができます。これにより、プログラムのパフォーマンスを向上させることが可能になります。.