目前我正在使用pythonos.system(cmd)
做一些日常工作。
这是一种情况,cmd需要5-6分钟才能完成,我手动运行这个cmd,它可以工作,但是当我把它放入时os.system(cmd)
,os.system(cmd)
当cmd还没有完成时会自动退出。
所以我的问题是:如何处理这个问题,设置超时值还是有更好的方法来完成这项工作?
提前致谢!
你试过这个subprocess
模块吗?添加它以替换os.system
其他较旧的os
方法。以下内容几乎直接来自文档:
import os
import subprocess
proc = subprocess.Popen(cmd, shell=True)
pid, sts = os.waitpid(proc.pid, 0)
# you may check on this process later and kill it if it's taking too long
if proc.poll() in [whatever, ...]:
os.kill(proc.pid)
或者如果您正在尝试调试进程退出的原因:
import subprocess
import sys
try:
retcode = subprocess.call(cmd, shell=True)
if retcode < 0:
print >>sys.stderr, "Child was terminated by signal", -retcode
else:
print >>sys.stderr, "Child returned", retcode
except OSError, e:
print >>sys.stderr, "Execution failed:", e