因此,我尝试通过execute
专门执行Linux命令。我只想等待30秒才能执行此命令,因为在某些情况下,我的命令挂起并且程序永远等待。
以下是我使用的两种方法。
方法1
subprocess.popen()
方法2
cmd = "google-chrome --headless --timeout=30000 --ignore-certificate-errors --print-to-pdf out.pdf https://www.google.com/
process = subprocess.call(cmd, shell=True)
process.wait() # Here I want to wait only till 30 secs and not untill process completes
在第二种方法中甚至没有创建文件。请提出一个选择。
答案 0 :(得分:1)
Popen.wait
采用可选的timeout
参数。您可以使用此方法仅在特定时间等待完成。如果触发超时,则可以终止该过程。
process = subprocess.call(cmd)
try:
# if this returns, the process completed
process.wait(timeout=30)
except subprocess.TimeoutExpired:
process.terminate()
从Python 3.5开始,您还可以使用subprocess.run
便捷功能。
subprocess.run(cmd, timeout=30)
请注意,这仍然会引发TimeoutExpired
,但会自动终止子进程。