如果不知何故超时,我想重新运行 subprocess.call 。
subprocess.call('some command', timeout=600)
if timeout:
subprocess.call('some command')
我该怎么做这样的事情?
子流程调用 raises [Python 3.Docs]:异常 subprocess.TimeoutExpired当(给出并)达到超时时(就像Popen.沟通).
这是一段不断启动的代码NotePad超时时间为 3 秒,直到运行 2 次,或者用户手动关闭它:
>>> max_runs = 2
>>> run = 0
>>> while run < max_runs:
... try:
... subprocess.call("notepad", timeout=3)
... except subprocess.TimeoutExpired:
... continue
... else:
... break
... finally:
... run += 1
...
0
尽管这在技术上回答了问题,但我认为重新启动未结束的进程不是一个好主意,因为连续运行很有可能会产生相同的结果(将超时)。在这种情况下,你必须使用Popen and 交流,如果进程超时,则通过杀死它波开终止.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)