代码之家  ›  专栏  ›  技术社区  ›  Julian Lettner

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

  •  0
  • Julian Lettner  · 技术社区  · 6 年前

    我用 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)
    
    0 回复  |  直到 6 年前