根据@Saullo GP Castro的精彩答案,这是一个使用subprocess.Popen而不是{}来避免创建临时文件的版本。在
import subprocess
def isresponding(name):
"""Check if a program (based on its name) is responding"""
cmd = 'tasklist /FI "IMAGENAME eq %s" /FI "STATUS eq running"' % name
status = subprocess.Popen(cmd, stdout=subprocess.PIPE).stdout.read()
return name in str(status)
在Windows上,可以执行以下操作:
但使用PID更为可靠:
^{pr2}$从
tasklist
你可以得到更多的信息。要直接得到“不响应”的进程,只需在给定的函数中将“正在运行”改为“不响应”。See more info here。在根据@Saullo GP Castro的精彩答案,这是一个使用}来避免创建临时文件的版本。在
subprocess.Popen
而不是{相应的PID版本为:
^{pr2}$timeit
的使用表明,subprocess.Popen
的使用速度是原来的两倍(主要是因为我们不需要遍历文件):令人惊讶的是,如果我们使用PID,
os.system
实现会慢一些,但是如果使用subprocess.Popen
,则差别不大。在希望能有所帮助。在
相关问题 更多 >
编程相关推荐