回答
如果您使用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. 如何杀死当前shell中的所有子进程?
- 3. 如何杀死Bash中的子进程?
- 4. 如何杀死python中的分叉子及其jackd子进程
- 5. 杀死进程杀死其他进程
- 6. 如何杀死Node Express子进程?
- 7. 用python杀死进程
- 8. 而不杀死Python进程
- 9. 在Python 2.5中,我该如何杀死一个子进程?
- 10. 如何杀死ruby Thor中的所有进程停止?
- 11. 如何杀死多进程中的所有Pool worker?
- 12. 如何杀死OS X中的所有窗口进程
- 13. 杀死所有进程,强制所有进程停止
- 14. 多线程 - 杀死线程及其所有子进程
- 15. 如何杀死nohup进程?
- 16. 杀死窗口中的进程python 2.5
- 17. 杀死进程
- 18. 杀死进程
- 19. 如何杀死spacemacs中的进程
- 20. 如何用其他命令杀死子进程python
- 21. 在等待完成时如何杀死一个Python子进程?
- 22. 如何杀死所有与名称匹配的进程?
- 23. 我如何杀死python中的线程
- 24. 如果exec失败,杀死子进程
- 25. Vbscript中的杀死进程
- 26. 如何杀死在线程中启动的子进程?
- 27. 杀死一个已创建的子进程及其创建的所有进程
- 28. 杀死不会杀死进程
- 29. Android:杀死应用程序中的所有进程
- 30. 在使用Python的Windows中,如何杀死我的进程?
你是如何产卵的4子流程和你尝试过这么远吗? – gaige 2013-05-09 09:43:05
其实我的目的是当新的请求来过程时,需要停止以前的过程。 – CrazyCoder 2013-05-09 09:47:40
调度子流程是什么?如果你想杀掉以前的进程,这些进程的创建者(所有者)将拥有杀死它们所需的信息。例如 – gaige 2013-05-09 09:48:52