Python中如何使用队列实现进程间通信
在Python中,可以使用multiprocessing模块通过队列实现进程间通信。具体操作如下:
-
导入multiprocessing包中的Queue类:
python from multiprocessing import Queue
-
创建一个Queue对象:
python q = Queue() # 默认创建一个无界队列,即队列长度无限制
-
向队列中添加数据:
python q.put('pidancode.com') # 向队列中添加一个字符串 'pidancode.com' q.put('皮蛋编程') # 向队列中添加一个字符串 '皮蛋编程'
-
从队列中获取数据:
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
相关文章