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メソッドによってコールバック関数が指定されます。タスクが完了すると、コールバック関数が実行され、タスクの返り値が引数として渡されます。

コールバック関数はスレッドプール内のスレッドで実行されるため、コールバック関数内で共有リソースを使わないように注意するか、ロックを使用して共有リソースへのアクセスを保護する必要があります。

bannerAds