多处理池:任务启动时收到通知

2024-04-25 21:03:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我像这样使用multiprocessing.Pool来执行许多任务。你知道吗

def execute(task):
    # run task, return result
def on_completion(task_result):
    # process task result

async_results = [pool.apply_async(execute,
                                  args=[task],
                                  callback=on_completion)
                 for task in self.tasks]

# wait for results

我的完成处理程序是由池以一种很好的序列化方式调用的,因此我不必担心它的实现中的线程安全。你知道吗

但是,我也希望在任务启动时得到通知。有没有一个优雅的方法来完成以下任务?你知道吗

def on_start(arg): # Whatever arg(s) were passed to the execute function
    # Called when task starts to run

pool.apply_async(run_task,
                 args=[task],
                 start_callback=on_start,
                 completion_callback=on_completion)

Tags: runfortaskexecuteasyncondefcallback