2

目前我正在使用pythonos.system(cmd)做一些日常工作。

这是一种情况,cmd需要5-6分钟才能完成,我手动运行这个cmd,它可以工作,但是当我把它放入时os.system(cmd)os.system(cmd)当cmd还没有完成时会自动退出。

所以我的问题是:如何处理这个问题,设置超时值还是有更好的方法来完成这项工作?

提前致谢!

4

1 回答 1

3

你试过这个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
于 2012-04-15T09:59:34.943 回答