【发布时间】:2011-07-27 03:51:54
【问题描述】:
当我运行以下代码时:
p = subprocess.Popen("...", shell=True)
if p.poll() == None:
p.kill()
进程根本没有被杀死。我在 Windows 上。
我以为是多线程的原因,我在一个线程中运行它,还是一样的。
您知道为什么会发生这种情况吗?
谢谢
更新
我找到了导致问题的代码:
while cur_time < self.time_limit:
if p.poll() != None:
too_much_time = False
break
time.sleep(0.1)
cur_time += 0.1
我运行此程序以确保该过程不会超过时间限制。显然这就是我无法终止进程的原因。
【问题讨论】:
-
@nmichaels,我都试过了。两者都不起作用。根据文档,他们在 Windows 上做同样的事情。
-
你的意思是“我不能杀死进程”:循环在任何地方都不包含
p.kill(),你说只有一个线程。在循环中打印cur_time, self.time_limit。 -
您不需要
shell=True,除非您在诸如type之类的shell 命令中执行内置命令。None是单例;你可以在循环中使用p.poll() is not None。
标签: python windows process terminate