gpt4 book ai didi

python - Popen对象后是否需要调用Popen.wait()到 "clean up"?

转载 作者:行者123 更新时间:2023-11-28 16:41:55 26 4
gpt4 key购买 nike

我正在使用 Popen 来维护 Python 程序中的子进程池。在我的程序中有执行“清理”的自然点 - 在这些点我调用 Popen.poll() 来确定特定进程是否仍在运行,如果没有,我删除它的 从池中弹出对象并回收它正在使用的任何资源。

是否需要调用 Popen.wait() 来执行某种语言或操作系统级别的清理?对Popen.poll() 的调用已经确定进程已经终止,它甚至设置了returncode 属性。是否还有其他原因需要调用 Popen.wait()

最佳答案

不,如果您正在调用 poll,则不必调用 wait。它们基本上做同样的事情,除了 wait 无限等待。

投票:

if self.returncode is None:
if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0:
self.returncode = _GetExitCodeProcess(self._handle)
return self.returncode

等待:

if self.returncode is None:
_subprocess.WaitForSingleObject(self._handle,
_subprocess.INFINITE)
self.returncode = _subprocess.GetExitCodeProcess(self._handle)
return self.returncode

这是subprocess模块的windows实现代码,其他的都遵循同样的规则。

在 MacOS X 上和我假设在 Linux 上的实现是相同的,它们都调用 os.waitpid

关于python - Popen对象后是否需要调用Popen.wait()到 "clean up"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18492716/

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