Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何实现子进程超时?_Python_Subprocess - Fatal编程技术网

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管理它),所以可能在多环境设置中发生了一些事情。