python3学习记录之-生产者和消费者模式(队列和线程)
第一次写博客,主要用于记录平时遇到的问题和学习记录
环境:python3
工具:pycharm
工作中需要用到消息队列,从串口读取数据存入队列中,然后另起一个线程来从队列中取数据两个线程互不干涉,
所以了解了一下python的消息队列的实现,下面做个简单举例请看代码:
import queue#导入队列 import threading,time#导入线程和time模块 def producer(q,name):#创建生产者函数 for i in range(1,21):#产生20个 info = name+ '的娃娃%s'%str(i) q.put(info)#把数据放入队列 q.put(None)#none表示不在生产 def consumer(q,name):#创建消费者函数 while 1:#循环接收数据 info = q.get() if info: print("%s拿走了%s"%(name,info)) else: break#否则退出接收循环 if __name__=='__main__': q= queue.Queue(10)#创建长度为10的消息队列 p_pro = threading.Thread(target=producer,args=(q,'生产者'))#创建生产者线程 c = threading.Thread(target=consumer, args=(q,'消费者'))#创建消费者线程 p_pro.start()#启动线程 c.start()#启动线程
运行结果如下: