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()#启动线程

运行结果如下:

 

posted @ 2021-04-25 11:36  秀才哥哥  阅读(221)  评论(0编辑  收藏  举报