Pythonでスレッドプールを作成する方法は何ですか
Pythonでは、concurrent.futuresモジュールのThreadPoolExecutorクラスを使用してスレッドプールを作成できます。
スレッドプールの作成方法の一般的な例を以下に示します。
import concurrent.futures
def task_function(arg):
# 执行任务的函数
print(f"Executing task with argument: {arg}")
# 创建线程池
with concurrent.futures.ThreadPoolExecutor() as executor:
# 提交任务给线程池
for i in range(5):
executor.submit(task_function, i)
上の例では with 文を使用して ThreadPoolExecutor オブジェクトを作成し、スレッドプールのライフサイクルを自動管理します。次に、executor.submit() メソッドを使用してスレッドプールにタスクを送信します。submit() メソッドは呼び出し可能オブジェクト(関数など)とその引数を受け取り、非同期計算の結果を表す Future オブジェクトを返します。タスクはスレッドプール内の空きスレッドに割り当てられて実行されます。
スレッドプールのサイズは指定できます。たとえば:
max_workers = 5
with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:
# ...
この例では、スレッドプールのサイズは5に制限されています。具体的な要求や計算リソースによって、さまざまなスレッドプールサイズを設定することができます。
ThreadPoolExecutor クラスは concurrent.futures モジュールが提供するスレッドプールを実装するためのクラスです。Python 3.2以降では ProcessPoolExecutor クラスも提供されており、プロセスプールを作成します。