Pythonのマルチスレッドで返り値を取得する方法
Pythonでは、concurrent.futuresモジュールを使用してマルチスレッドを導入し、戻り値を取得できます。具体的には、以下の手順に従います。
- 同時実行
import concurrent.futures
- マルチスレッドでタスクを行う関数を定義し、その関数で取得する必要がある値を戻り値とする:
def task():
# 执行任务
return result
- スレッドプールオブジェクトを作成します。
executor = concurrent.futures.ThreadPoolExecutor()
- スレッドプールにタスクを発行し、Futureオブジェクトを取得する:
future = executor.submit(task)
- 結果
result = future.result()
下記にコード例を完整に提示します。
import concurrent.futures
def task():
# 执行任务
return result
executor = concurrent.futures.ThreadPoolExecutor()
future = executor.submit(task)
result = future.result()
print(result)
Future.result()メソッドはブロックメソッドであり、タスクの実行が完了して結果が返されるまで待機します。タスクが完了していない状態でこのメソッドを呼び出すと、現在のスレッドがブロックされます。複数のタスクを非同期に実行してすべての結果を取得する必要がある場合は、as_completed()メソッドとexecutor.map()メソッドを使用します。