Python 子进程
假设我有4个资源想要使用。 我创建了4个子进程,然后等待其中一个空闲,一旦有一个空闲了,我就会再次利用这个空闲的资源。
我想知道有没有办法可以找出哪个子进程已经完成工作。目前,我把所有子进程的进程ID存储在一个列表里,然后用循环来遍历。
for p in ps:
p.wait()
但是这样会导致应用程序在第一个进程完成之前一直被阻塞。我的目标是等到任意一个子进程完成。 请告诉我有什么想法。
3 个回答
1
在Python 3.2.x版本中,你可以使用“并发未来”(concurrent futures)。这是一个非常简单的接口,可以用来实现你所说的处理引擎,可以选择使用进程或线程。(当然,线程会受到全局解释器锁(GIL)的问题影响,但在3.2.x版本中,这个影响似乎小得多。)你只需要提供一个函数,这个函数会去访问你感兴趣的资源。
2
使用 p.poll()
。这个方法可以告诉你这个进程是否已经结束。