Как завершить все процессы за исключением в процессе в Pyhton: многопроцессорность - PullRequest
0 голосов
/ 10 января 2020

Я хочу убить все процессы, если у меня есть исключение в процессе. Вот пробный код.

import multiprocessing as mp;
import time;

def f(x):
  if x==1:
    raise Exception("job error");
  time.sleep(x*0.2);
  print x;
  return x*x;

if __name__ == '__main__':
  p = mp.Pool(processes=5);
  try:
    for i in [4,6,3,5,1]:
      p.apply_async(f, (i,));
  except Exception as e: # exception is not caught!
    print "catch",e;
    p.terminate();
  p.close();
  p.join();

Однако исключение не перехватывается. Как я могу перехватить исключение в процессе и завершить все процессы? Я использую python 2.7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...