Python 如何实现子进程超时?
我希望在子进程调用生成的子进程上实现超时 因此,作为一项测试:Python 如何实现子进程超时?,python,subprocess,Python,Subprocess,我希望在子进程调用生成的子进程上实现超时 因此,作为一项测试: #!/home/depot/.conda/envs/python3/bin/python import subprocess if __name__ == "__main__": subprocess.call('./sleep.py', timeout=1) 正在运行的sleep.py文件: #!/home/depo
#!/home/depot/.conda/envs/python3/bin/python
import subprocess
if __name__ == "__main__":
subprocess.call('./sleep.py', timeout=1)
正在运行的sleep.py
文件:
#!/home/depot/.conda/envs/python36/bin/python
from time import sleep
if __name__ =="__main__":
for j in range(3):
print(j)
sleep(1)
现在很明显,这并没有实现任何超时
我有点惊讶,因为文档似乎暗示超时确实是:然而,其他关于SO的答案似乎忽视了该功能,主张创建定制计时器:
如何使用内置的
timeout
参数实现超时?对我来说工作正常。1秒后,我得到一个子进程.TimeoutExpired
异常,sleep.py被终止。你会怎么样?您使用的是什么版本的python?(我已经在3.4和3.5上进行了测试-这两项都有效)。你在使用什么操作系统?@Gavin在我的例子中,脚本sleep.py只需继续,直到结束,超时后不停止。我使用的是Linux,使用的是Python3.6(我也尝试过使用3.4,结果类似)。我在脚本的开头添加了shebang。这就是我称呼他们的实际方式——也许这确实有区别?嗯,舍邦应该是不同的吗?我倾向于使用#/usr/bin/env-python
,这样它就可以抓住路径上的第一条python(并让virtualenv管理它),所以可能在多环境设置中发生了一些事情。