进程管理编程

子进程

参考文档
python subprocess.Popen()
multiprocessing

获取进程运行时间

get process elapsed time

如果进程正在运行

  1. 可以通过读取 top 命令的结果
  2. 可以通过访问 /proc 内核信息
  3. python 可以用 psutil (psutil 封装top, ps, netstat等)
1
2
p = psutil.Process(udpproc.popen.pid)
elapsed_time = p.cpu_times()[0]

如果进程运行结束

1
2
3
# 如果 subprocess 不结束,则无法获取到消耗的资源
info = resource.getrusage(resource.RUSAGE_CHILDREN)
print info

查看子进程运行状态

1
2
3
4
5
6
7
popen = subprocess.Popen(args=new_proc_cmd)
if popen.poll()==0:
# 子进程正常结束
elif popen.poll()==None:
# 子进程还在运行
elif 1<= popen.poll() <= 255
# 子进程出现错误

本地

nohup command > myout.file 2>&1 &