python 子进程

标签 python subprocess

假设我有 4 个资源要使用。 我创建了 4 个子进程,然后等待其中 1 个空闲,一旦其中一个空闲,我就会再次使用已释放的资源。

我想知道是否有任何方法可以找出哪个子进程已完成工作。截至目前,我将所有 child 的 pid 存储在一个列表中,并使用 for 循环进行迭代。

for p in ps:
   p.wait()

但这会阻塞应用程序,直到第一个进程完成。我的目标是等到任何子流程完成。 请让我知道任何想法。

最佳答案

从列表中每个子进程对象的 pid 字段中检索进程 ID,并创建一个将这些进程 ID 映射回子进程对象的字典。然后调用 os.wait,它将等待 任何 子进程退出,并使用您的字典将返回的 PID 映射回适当的子进程。为了更好地控制,请使用 os.waitpidos.wait3os.wait4(Python 文档并没有真正解释它们是如何工作的,但是据我所知,它们直接映射到 waitpidwait4 系统调用,因此您可以使用这些文档作为指南)。

关于 python 子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4974209/

相关文章:

python - 使用 OpenCV (putText) 设置文本宽度

python - 如何解析子流程的结果

python - 使用 python 子进程通过管道传输很长的字符串

python - 异步子进程 Popen python 3.5

linux - Bash:当脚本终止时,如何终止脚本的子进程?

python - ' ' 对象不可迭代。 Django 1.11

python - Selenium Python : Download PDF specified by DOM object

javascript - 单击带有启动的 JS 链接

python - 是否可以打印变量的实际名称,而不是它包含的值?

python - 测量外部程序使用的耗时、内存量和 CPU