python線程池回調(diào)函數(shù)怎么使用

小億
118
2023-10-26 09:34:12

在Python中,可以使用concurrent.futures模塊中的ThreadPoolExecutor來創(chuàng)建線程池,并利用其提供的submit方法來提交任務(wù)。如果需要在任務(wù)完成后執(zhí)行回調(diào)函數(shù),可以使用add_done_callback方法來指定回調(diào)函數(shù)。

下面是一個(gè)簡(jiǎn)單的示例代碼:

from concurrent.futures import ThreadPoolExecutor

# 定義一個(gè)回調(diào)函數(shù)
def callback(result):
    print("任務(wù)完成,結(jié)果為:", result)

# 定義一個(gè)任務(wù)函數(shù)
def task(x, y):
    return x + y

# 創(chuàng)建線程池
with ThreadPoolExecutor() as executor:
    # 提交任務(wù),并指定回調(diào)函數(shù)
    future = executor.submit(task, 2, 3)
    future.add_done_callback(callback)

在上述示例中,我們首先定義了一個(gè)回調(diào)函數(shù)callback和一個(gè)任務(wù)函數(shù)task,然后創(chuàng)建了一個(gè)線程池。通過executor.submit方法提交了一個(gè)任務(wù),并通過future.add_done_callback方法指定了回調(diào)函數(shù)。當(dāng)任務(wù)完成后,回調(diào)函數(shù)將會(huì)被執(zhí)行,并傳入任務(wù)的返回結(jié)果作為參數(shù)。

需要注意的是,回調(diào)函數(shù)將在線程池中的某個(gè)線程中執(zhí)行,因此在回調(diào)函數(shù)中應(yīng)避免使用共享資源,或者需要使用鎖來保護(hù)共享資源的訪問。

0