gpt4 book ai didi

Python 3 : subprocess causes zombies

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:50 24 4
gpt4 key购买 nike

已关注 the popular answers to this question和说明here我在 python 3 中创建了以下代码:

  p1                = subprocess.Popen(["ps", "-e", "-o", "pcpu,args"],           stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p2 = subprocess.Popen(["cut", "-c", "-132"], stdin=p1.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p3 = subprocess.Popen(["awk", "NR>2"], stdin=p2.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p4 = subprocess.Popen(["sort", "-nr"], stdin=p3.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p5 = subprocess.Popen(["head", "-10"], stdin=p4.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
ps,err = p5.communicate()
psout = str(ps, 'utf-8')

此代码在循环中每分钟左右调用一次。与我所相信的相反,这仍然会产生僵尸。我究竟做错了什么?

编辑:运行代码时的僵尸:

$ ps -eo pid,ppid,state,cmd | awk '$3 == "Z"'
14441 11232 Z [ps] <defunct>
14442 11232 Z [cut] <defunct>
14445 11232 Z [sort] <defunct>

最佳答案

您需要对所有子进程使用 communicate() 来摆脱“失效”进程。

关于Python 3 : subprocess causes zombies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47959304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com