taskpool任务执行结束后如何执行回调方法
在 Python 中,TaskPool 通常用于并发执行多个任务。当你使用 TaskPool 执行任务时,你可以为每个任务添加一个回调函数,该函数将在任务完成后被调用。这可以通过 TaskPool 的 posttask
方法实现。
下面是一个示例代码,展示了如何使用 TaskPool 在任务完成后执行回调方法:
from concurrent.futures import ThreadPoolExecutor
def task(n):
print(f"Task {n} started")
# 模拟任务执行时间
import time
time.sleep(2)
print(f"Task {n} finished")
def callback(n):
print(f"Callback for task {n} called")
with ThreadPoolExecutor() as executor:
# 提交任务并指定回调函数
for i in range(5):
executor.submit(task, i).add_done_callback(callback)
在上面的示例中,我们首先导入了 ThreadPoolExecutor
类。然后,我们定义了两个函数 task
和 callback
,分别表示任务和回调函数。task
函数只是简单地打印出任务的开始和结束消息,并模拟了任务执行时间。callback
函数将在任务完成后被调用,并打印出回调消息。
接下来,我们使用 ThreadPoolExecutor
创建了一个线程池。然后,我们循环提交了 5 个任务到线程池中,并使用 add_done_callback
方法为每个任务添加了一个回调函数 callback
。这样,当每个任务完成后,回调函数将被自动调用。
运行上述代码,输出将会是:
Task 0 started
Task 1 started
Task 2 started
Task 3 started
Task 4 started
Task 0 finished
Callback for task 0 called
Task 1 finished
Callback for task 1 called
Task 2 finished
Callback for task 2 called
Task 3 finished
Callback for task 3 called
Task 4 finished
Callback for task 4 called
可以看到,每个任务完成后,对应的回调函数就会被调用。这样你就可以在任务执行结束后执行回调方法了。
可参考如下示例: