我在Python中运行一种敏感的.exe文件来接收一些数据测量。文件应该打开,进行测量,然后关闭。问题有时会崩溃,我需要能够在很长一段时间内每10分钟进行一次这些测量。
我需要的是检查'看看.exe是否没有响应,如果没有响应,那么让它杀死进程。或者在每次测量后杀死整个脚本。问题是当脚本尝试运行没有响应的.exe文件时,脚本会卡住。
这是脚本:
FNULL = open(os.devnull, 'a')
filename = "current_pressure.log"
command = '"*SRH#\r"'
args = "httpget -r -o " + filename + " -C 2 -S " + command + IP
subprocess.call(args, stdout=FNULL, stderr=FNULL, shell=False)
基本上,需要像:
"if httpget.exe not responding, then kill process"
OR
"kill above script if running after longer than 20 seconds"
答案 0 :(得分:0)
如果进程持续太长时间,请使用计时器终止进程。在这里,我有两个定时器可以进行优雅和坚硬的终止,但如果你愿意的话,你可以直接杀人。
import threading
FNULL = open(os.devnull, 'a')
filename = "current_pressure.log"
command = '"*SRH#\r"'
args = "httpget -r -o " + filename + " -C 2 -S " + command + IP
proc = subprocess.Popen(args, stdout=FNULL, stderr=FNULL, shell=False)
nice = threading.Timer(20, proc.terminate)
nice.start()
mean = threading.Timer(22, proc.kill)
mean.start()
proc.wait()
nice.cancel()
mean.cancel()
答案 1 :(得分:0)
通常,当程序在Windows上工作时挂起时,我们会尝试转到任务管理器并结束该特定程序的进程。当这种方法失败时,我们会尝试使用某些第三方软件来终止它。但是,还有另一种更好的方法可以自动终止这种被挂起的程序
http://www.problogbooster.com/2010/01/automatically-kills-non-responding.html