python强制退出终止所以进程_Python多处理终止进程

I am learning how to use the Python multiprocessing library. However, while I am going through some of the examples, I ended up with many python processes running in my background.

One of the example looks like below:

from multiprocessing import Process, Lock

def f(l, i):

l.acquire()

print 'hello world', i

l.release()

if __name__ == '__main__':

lock = Lock()

for num in range(10): # I changed the number of iterations from 10 to 1000...

Process(target=f, args=(lock, num)).start()

Now here is a screen shot of my 'TOP' command:

88950 Python 0.0 00:00.00 1 0 9 91 1584K 5856K 2320K 1720K 2383M 82441 1 sleeping 1755113321 799

88949 Python 0.0 00:00.00 1 0 9 91 1584K 5856K 2320K 1720K 2383M 82441 1 sleeping 1755113321 798

88948 Python 0.0 00:00.00 1 0 9 91 1580K 5856K 2316K 1716K 2383M 82441 1 sleeping 1755113321 797

88947 Python 0.0 00:00.00 1 0 9 91 1580K 5856K 2316K 1716K 2383M 82441 1 sleeping 1755113321 796

88946 Python 0.0 00:00.00 1 0 9 91 1576K 5856K 2312K 1712K 2383M 82441 1 sleeping 1755113321 795

88945 Python 0.0 00:00.00 1 0 9 91 1576K 5856K 2312K 1712K 2383M 82441 1 sleeping 1755113321 794

88944 Python 0.0 00:00.00 1 0 9 91 1576K 5856K 2312K 1712K 2383M 82441 1 sleeping 1755113321 794

88943 Python 0.0 00:00.00 1 0 9 91 1572K 5856K 2308K 1708K 2383M 82441 1 sleeping 1755113321 792

88942 Python 0.0 00:00.00 1 0 9 91 1568K 5856K 2304K 1708K 2383M 82441 1 sleeping 1755113321 790

88941 Python 0.0 00:00.00 1 0 9 91 1564K 5856K 2300K 1704K 2383M 82441 1 sleeping 1755113321 789

88938 Python 0.0 00:00.00 1 0 9 91 1564K 5856K 2300K 1704K 2383M 82441 1 sleeping 1755113321 788

88936 Python 0.0 00:00.00 1 0 9 91 1576K 5856K 2296K 1716K 2383M 82441 1 sleeping 1755113321 787

88935 Python 0.0 00:00.00 1 0 9 91 1560K 5856K 2296K 1700K 2383M 82441 1 sleeping 1755113321 787

88934 Python 0.0 00:00.00 1 0 9 91 1560K 5856K 2296K 1700K 2383M 82441 1 sleeping 1755113321 786

88933 Python 0.0 00:00.00 1 0 9 91 1556K 5856K 2292K 1696K 2383M 82441 1 sleeping 1755113321 785

88932 Python 0.0 00:00.00 1 0 9 91 1556K 5856K 2292K 1696K 2383M 82441 1 sleeping 1755113321 784

88931 Python 0.0 00:00.00 1 0 9 91 1552K 5856K 2288K 1692K 2383M 82441 1 sleeping 1755113321 783

88930 Python 0.0 00:00.00 1 0 9 91 1612K 5856K 2288K 1752K 2383M 82441 1 sleeping 1755113321 783

88929 Python 0.0 00:00.00 1 0 9 91 1588K 5856K 2288K 1728K 2383M 82441 1 sleeping 1755113321 782

88927 Python 0.0 00:00.00 1 0 9 91 1608K 5856K 2284K 1748K 2383M 82441 1 sleeping 1755113321 781

88926 Python 0.0 00:00.00 1 0 9 91 1548K 5856K 2284K 1688K 2383M 82441 1 sleeping 1755113321 780

88924 Python 0.0 00:00.00 1 0 9 91 1556K 5856K 2276K 1700K 2383M 82441 1 sleeping 1755113321 778

88923 Python 0.0 00:00.00 1 0 9 91 1540K 5856K 2276K 1684K 2383M 82441 1 sleeping 1755113321 777

88922 Python 0.0 00:00.00 1 0 9 91 1540K 5856K 2276K 1684K 2383M 82441 1 sleeping 1755113321 776

88921 Python 0.0 00:00.00 1 0 9 91 1536K 5856K 2272K 1680K 2383M 82441 1 sleeping 1755113321 774

88920 Python 0.0 00:00.00 1 0 9 91 1528K 5856K 2264K 1672K 2383M 82441 1 sleeping 1755113321 771

88919 Python 0.0 00:00.00 1 0 9 91 1528K 5856K 2264K 1672K 2383M 82441 1 sleeping 1755113321 771

88918 Python 0.0 00:00.00 1 0 9 91 1528K 5856K 2264K 1672K 2383M 82441 1 sleeping 1755113321 770

....

I don't know how to kill them in one go.

ps ... | grep python .... kill?

what kind of python code do I need to add to avoid this miserable situation again. Thanks!

解决方案

You need to .join() on your processes in a worker Queue, which will lock them to the calling application until all of them succeed or kill when the parent is killed, and run them in daemon mode.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值