回答
如果您使用subprocess.Popen
功能已經返回進程ID打開子可以使用os.kill
功能
import os
os.kill(process.pid)
。但是,如果使用shell=True
標誌,請小心,因爲在這種情況下,進程pid將是shell進程標識。如果這是你的情況here是一個可行的解決方案。
是的我正在使用Shell = True標誌。 – CrazyCoder 2013-05-09 10:03:13
然後這可以幫助你http://stackoverflow.com/questions/4789837/how-to-terminate-a-python-subprocess-launched-with-shell-true – jvallver 2013-05-09 10:33:01
是os.killpg在Windows中工作? – CrazyCoder 2013-05-09 11:32:08
在你的主Python腳本你在哪裏產卵子發送/傳遞事件對象與它的主要工藝讓你的子過程的參考與事件
示例代碼:
from multiprocessing import Process, Event
# sub process execution point
def process_function(event):
# if event is set by main process then this process exits from the loop
while not event.is_set():
# do something
# main process
process_event = {} # to keep reference of subprocess and their events
event = Event()
p = Process(target=process_function, args=(event))
p.start()
process_event[p] = event
# when you want to kill all subprocess
for process in process_event:
event = process_event[process]
event.set()
編輯
當你評價你的問題,我認爲它不是在你的情況下非常有用,您使用subprocess.Popen.But一個好的技巧,雖然
假設你要殺死所有的子進程沒有跟蹤他們,外部LIB psutil讓一切變得簡單:
import os
import psutil
# spawn some child processes we can kill later
for i in xrange(4): psutil.Popen('sleep 60')
# now kill them
me = psutil.Process(os.getpid())
for child in me.get_children():
child.kill()
當我使用此代碼時,我得到了錯誤: WindowsError:[錯誤32]該進程無法訪問該文件,因爲它正在被另一個進程使用:'abc.txt' – CrazyCoder 2013-05-09 10:25:23
這很奇怪......很少有選項回想起來 - 1.你的系統上沒有sleep.exe(儘管這不會是錯誤32),2.也許它受到其他代碼的影響。你是否在口譯員那裏嘗試過? – itai 2013-05-12 07:16:05
- 1. 如何殺死進程窗口的所有遞歸子進程
- 2. 如何殺死所有異步進程
- 3. 如何殺死當前shell中的所有子進程?
- 4. 如何有效地殺死Python中的凍結子進程?
- 5. Bash:殺死子進程中的所有進程
- 6. 如何殺死Bash中的子進程?
- 7. 如何殺死python中的分叉子及其jackd子進程
- 8. 如何殺死Linux中沒有被殺死的進程
- 9. 在Python中殺死所有線程
- 10. 殺死PPID可以同時殺死所有的與子進程的關聯?
- 11. 殺死蜂巢工作在名稱節點沒有殺死所有子進程
- 12. 無法弄清楚如何殺死Python 3.5中的子進程
- 13. 殺死進程殺死其他進程
- 14. 如何殺死Node Express子進程?
- 15. 蟒蛇multiprocessing.Process.terminate - 如何殺死子進程
- 16. 如何殺死一個子進程
- 17. Python - 不能殺死進程
- 18. 殺死一個python進程
- 19. 而不殺死Python進程
- 20. 用python殺死進程
- 21. 如何殺死java中的進程啓動的子進程?
- 22. 殺死Popen子進程
- 23. 殺死子進程清除
- 24. 在Python 2.5中,我該如何殺死一個子進程?
- 25. 如何殺死OS X中的所有窗口進程
- 26. 如何殺死zsh中的所有後臺進程?
- 27. 如何殺死多進程中的所有Pool worker?
- 28. 如何殺死ruby Thor中的所有進程停止?
- 29. 殺死所有進程,強制所有進程停止
- 30. 多線程 - 殺死線程及其所有子進程
你是如何產卵的4子流程和你嘗試過這麼遠嗎? – gaige 2013-05-09 09:43:05
其實我的目的是當新的請求來過程時,需要停止以前的過程。 – CrazyCoder 2013-05-09 09:47:40
調度子流程是什麼?如果你想殺掉以前的進程,這些進程的創建者(所有者)將擁有殺死它們所需的信息。例如 – gaige 2013-05-09 09:48:52