當我運行下面的代碼:的Python:調用process.terminate()不殺它
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上也做了同樣的事情。 – Alex 2011-03-31 18:52:20
你的意思是什麼「我不能殺死進程」:循環在任何地方都不包含'p.kill()',並且你說有一個單獨的線程。在循環中打印'cur_time,self.time_limit'。 – jfs 2011-03-31 19:34:39
除非在shell命令(如'type')中執行內置命令,否則不需要'shell = True'。 'None'是一個單身人士;你可以在循環中使用'p.poll()不是None'。 – jfs 2011-03-31 19:37:15