[英]Execute and monitor multiple instances of external program in Python
主程序是这样的:
PREPARE PARAMETERS FOR CHILD PROCESSES
subprocess.Popen('python child.py param=example1'.split(' '))
subprocess.Popen('python child.py param=example2'.split(' '))
...
如何使主程序监视它启动的子进程的每个实例,以及如何在未运行时使用其相应的参数重新启动它。
保持子进程的多个实例运行而不是在主进程中实现多线程架构师的目的是为了尽可能多地利用CPU和数据库的吞吐量。
将子进程的.pid
作为键保存命令,并使用命令.pid
其重新启动作为对应值。 即:
childid = []
for cmdline in cmdlines:
p = subprocess.Popen(cmdline.split())
childid[p.pid] = cmdline
os.wait将在任何子进程终止时返回:它为您提供子进程(pid,exitstatus)。 因此,只需重新启动并保持childid
。 即:
while mustcontinue:
pid, exitstat = os.wait()
cmdline = childid.pop(pid)
p = subprocess.Popen(cmdline.split())
childid[p.pid] = cmdline
大概您对这个无限循环何时结束有一些标准,在这里我只是使用mustcontinue
作为这些标准的名称;-)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.