Python:如何计时在multiprocessing.Pool中由工作人员产生的进程组?

时间:2019-01-16 00:57:01

标签: python multithreading concurrency subprocess

假设我有一个multiprocessing.Pool实例,该实例具有N个并发工作器。每个工作人员都叫subprocess.Popen(...)并运行一些东西。因此,工作程序至少管理两个进程:工作程序进程本身以及它产生的子进程,以及该子进程产生的任何子子进程。

如何在每个工作进程中监视该子流程(以及子流程产生的任何子子流程,如果有的话)的运行时间,并在超时时引发错误?

似乎threading.Timer不起作用,因为即使子进程已从CPU换出(即未运行),它也会计算时间。

signal.setitimer也不起作用,因为它的所有选项(PROF,VIRTUAL,REAL)都无法返回该子进程及其子子进程的实际运行时间(PROF和VIRTUAL:仅监视运行中的调用进程本身的时间,而不是它产生的子进程的时间; REAL:即使调用进程及其子进程未运行,也要计算时间)。

请仅使用Python2.7(抱歉,我无法选择。)

0 个答案:

没有答案