Pythonスレッドプールのコールバック関数の仕組み。
Pythonでは、concurrent.futuresモジュールのThreadPoolExecutorを利用してスレッドプールを作成し、submitメソッドでタスクを投入できます。タスク完了後にコールバック関数を呼び出したい場合は、add_done_callbackメソッドでコールバック関数を指定できます。
簡単なサンプルコードは以下のとおりです。
from concurrent.futures import ThreadPoolExecutor
# 定义一个回调函数
def callback(result):
print("任务完成,结果为:", result)
# 定义一个任务函数
def task(x, y):
return x + y
# 创建线程池
with ThreadPoolExecutor() as executor:
# 提交任务,并指定回调函数
future = executor.submit(task, 2, 3)
future.add_done_callback(callback)
上記サンプルでは、最初にコールバック関数のcallbackとタスク関数のtaskが定義され、スレッドプールが作成されます。executor.submitメソッドによってタスクが提出され、future.add_done_callbackメソッドによってコールバック関数が指定されます。タスクが完了すると、コールバック関数が実行され、タスクの返り値が引数として渡されます。
コールバック関数はスレッドプール内のスレッドで実行されるため、コールバック関数内で共有リソースを使わないように注意するか、ロックを使用して共有リソースへのアクセスを保護する必要があります。