python进程间通信之Queue

2020年6月24日 / 25次阅读 / Last Modified 2020年6月24日
多进程

此Queue非彼Queue,stdlib中的queue模块,是提供给多线程环境使用的。multiprocess.Queue,是提供个python多进程见通信使用的。

python有一个好的设计,即多线程和多进程的接口基本相同,现在这两个Queue的使用接口也基本相同!

from multiprocessing import Process, Queue

def f(q):
    q.put([42, None, 'hello'])

if __name__ == '__main__':
    q = Queue()
    p = Process(target=f, args=(q,))
    p.start()
    print(q.get())    # prints "[42, None, 'hello']"
    p.join()

这个python官方的示例有点太简单了,我弄了一个复杂点的,就想说明一个细节:multiprocessing.Queue可用于多个进程间的通信。

from multiprocessing import Process, Queue

def f(q):
    q.put([42, None, 'hello'])

def g(q):
    q.put([48, None, 'hello gggg'])
    
def h(q):
    print(q.get())
    print(q.get())
    
if __name__ == '__main__':
    q = Queue()
    p1 = Process(target=f, args=(q,))
    p2 = Process(target=g, args=(q,))
    p3 = Process(target=h, args=(q,))
    p1.start()
    p2.start()
    p3.start()
    p1.join()
    p2.join()
    p3.join()

主进程开了3个子进程,两个做put,一个做get,运行良好。

-- EOF --

本文链接:https://www.pynote.net/archives/2080

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top