gpt4 book ai didi

python - 忽略 Popen 的返回值是否安全?

转载 作者:行者123 更新时间:2023-12-04 08:43:38 25 4
gpt4 key购买 nike

我需要我的 python (2.7) 程序启动一个子进程,并在子进程运行时继续处理。所以我不希望主程序等待子进程终止。
这显然是通过返回类对象的 Popen 实现的。
忽略 Popen 的返回值是否安全?
垃圾收集器是否删除了 popen 对象?子进程终止后对象是否垃圾回收?
我无法用 Python 文档来回答这些问题。
请注意,由于我无法控制的约束,我使用的是 python 2.7。

最佳答案

在类 Unix 系统上,未能在子节点上使用 wait() 会创建僵尸。这是一个问题,因为您正在污染并最终耗尽您的流程表。见 https://en.wikipedia.org/wiki/Wait_(system_call)
如果您想在程序完成时终止子进程,请执行此操作。这正是您需要保存 Popen() 的结果的原因。

child = Popen(['sleep', '1234567890'])
# ... code happens ...
child.kill()
child.wait()
重申一下, Popen() 返回的 Python 对象当然会随着 Python 消失而消失;问题是您还需要清理它代表的实际操作系统进程。

关于python - 忽略 Popen 的返回值是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64440576/

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