multiprocessing多进程的输出怎么获得
时间: 2024-05-16 09:18:16 浏览: 78
Python multiprocessing 3 queue 进程输出 (多进程 多核运算 教学教程tutorial)
5星 · 资源好评率100%
在使用 `multiprocessing` 模块时,每个进程都是独立的,它们之间的输出不会直接显示在主进程的控制台中。通常,我们可以将每个进程的输出写入到一个共享的队列中,再由主进程将队列中的输出读取并打印出来。
以下是一个示例代码,其中包含了一个 `Worker` 类,它会在多个进程中被实例化,并通过 `queue` 参数共享一个队列:
```python
import multiprocessing as mp
class Worker(mp.Process):
def __init__(self, id, queue):
super().__init__()
self.id = id
self.queue = queue
def run(self):
self.queue.put(f"Worker {self.id} started")
# do some work...
self.queue.put(f"Worker {self.id} finished")
if __name__ == "__main__":
queue = mp.Queue()
workers = [Worker(i, queue) for i in range(3)]
for w in workers:
w.start()
for w in workers:
w.join()
while not queue.empty():
print(queue.get())
```
在上面的代码中,我们创建了三个 `Worker` 实例,并启动它们。每个 `Worker` 实例会在开始和结束时往队列中写入一条消息。在所有进程结束后,我们通过循环读取队列中的消息,并打印出来。这样就能够获取到所有进程的输出了。
阅读全文