multiprocessing.Pool: получать уведомления при запуске задачи - PullRequest
0 голосов
/ 21 февраля 2019

Я использую 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...