在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ù)共享資源的訪問。