остановите процесс specfi c в python ProcessPoolExecutor или разделяемом состоянии между ними - PullRequest
0 голосов
/ 25 февраля 2020

Это мой код

def long_stage_task(node, deployment_folder_name, stage_s3_bucket):
      global workers
      logging.info("starting....")
      work = StageOS(node, deployment_folder_name, stage_s3_bucket)--> class
      work.stagestart()--> class method
executor = ProcessPoolExecutor(5)
executor.submit(long_stage_task, i, deployment_folder_name, stage_s3_bucket)

Теперь, как я могу остановить определенный процесс / PID. Есть ли способ передать глобальные или общие состояния между ними, я не вижу ничего в do c. https://docs.python.org/3/library/concurrent.futures.html

1 Ответ

0 голосов
/ 26 февраля 2020

Вы можете передать работникам список Событий и установить их, когда вы хотите, чтобы работник остановился. Это подразумевает, что ваша long_stage_task функция периодически проверяет свое собственное событие.

Если то, что вы хотите, останавливает задачу, которая занимает слишком много времени, вы можете взглянуть на pebble . Это позволяет устанавливать тайм-ауты для вызовов функций, а также отменять текущие задачи.

...