Python: как рассчитать группу процессов, порожденную рабочим в многопроцессорной среде? - PullRequest
0 голосов
/ 16 января 2019

Допустим, у меня есть multiprocessing.Pool экземпляр, в котором N одновременно работающих. Каждый рабочий звонит subprocess.Popen(...) и запускает какие-то вещи. Таким образом, рабочий управляет как минимум двумя процессами: самим рабочим процессом и порожденным им подпроцессом, а также всеми подпроцессами, которые порождает этот подпроцесс.

Как отслеживать время выполнения этого подпроцесса (и любых подпроцессов, которые этот подпроцесс порождает, если таковые имеются) у каждого работника и выдавать ошибку, когда она истекает?

Кажется, threading.Timer не работает, потому что подсчитывает время, даже когда подпроцесс выгружается из ЦП (т.е. не работает).

signal.setitimer тоже не работает, потому что все его опции (PROF, VIRTUAL, REAL) не могут возвращать фактическое время выполнения этого подпроцесса и его подпроцессов (PROF и VIRTUAL: только отслеживает время выполнения сам вызывающий процесс, а не подпроцессы, которые он породил; REAL: отсчитывает время, даже когда вызывающий процесс и его подпроцессы не запущены).

Python2.7-only, пожалуйста (я не могу выбрать, извините ..)

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