作为大型计划的一部分,我正在使用
subprocess.call('some external program', shell=True)
(这是一个旧的C程序,我只有编译版本坐在网络服务器上,所以我不能只抓取C源代码并用Python连接它)
暂时生成一些数据,我再次读入Python。
问题是通过子进程调用的外部程序有时会卡在某些输入文件上。
有没有办法跳过subprocess.call()
,例如,如果shell在任意时间限制后没有响应?
E.g.,
# for data in directory:
# do sth.
subprocess.call('call prog.', shell=True) # skip if takes longer than 5 min
# analyze data
答案 0 :(得分:0)
从Python 3.3开始,您可以在几秒钟内设置timeout argument:
try:
return_code = subprocess.call('call prog.', shell=True, timeout=10)
except TimeoutExpired:
# handle timeout exception here which gets throw after
# 10 seconds in this example