Python中如何使用队列实现进程间通信

2023-04-11 00:00:00 队列 进程 如何使用

在Python中,可以使用multiprocessing模块通过队列实现进程间通信。具体操作如下:

  1. 导入multiprocessing包中的Queue类:

    python from multiprocessing import Queue

  2. 创建一个Queue对象:

    python q = Queue() # 默认创建一个无界队列,即队列长度无限制

  3. 向队列中添加数据:

    python q.put('pidancode.com') # 向队列中添加一个字符串 'pidancode.com' q.put('皮蛋编程') # 向队列中添加一个字符串 '皮蛋编程'

  4. 从队列中获取数据:

    python data1 = q.get() # 从队列中获取一个字符串 'pidancode.com' data2 = q.get() # 从队列中获取一个字符串 '皮蛋编程'

完整代码演示:

from multiprocessing import Process, Queue

def write(q):
    # 写入进程
    message = ['pidancode.com', '皮蛋编程', 'python']
    for m in message:
        q.put(m)

def read(q):
    # 读取进程
    while True:
        message = q.get()
        if message == 'quit':
            break
        print('Received:', message)

if __name__ == '__main__':
    q = Queue()

    p1 = Process(target=write, args=(q,))
    p2 = Process(target=read, args=(q,))

    p1.start()
    p2.start()

    p1.join()

    q.put('quit')
    p2.join()

这段代码中,我们创建了两个进程,一个用于写入Queue,另一个用于读取Queue的数据。在写入进程中,我们向队列中写入了三个字符串,分别是'pidancode.com'、'皮蛋编程'和'python';在读取进程中,我们通过while循环不断地从队列中获取数据,如果获取到了'quit'字符串,就跳出循环;否则就打印接收到的数据。

运行上述代码,输出结果如下:

Received: pidancode.com
Received: 皮蛋编程
Received: python

相关文章