多线程队列实现并发

之前写过一个
用python生成器实现单线程并发(做包子和吃包子)
参看https://blog.youkuaiyun.com/csdniter/article/details/90723175

现在用多线程队列再实现一下:

import time
import threading         #线程模块
import queue             #队列模块
q=queue.Queue(10)        #创建一个队列对象,允许放10个数据,不限类型
def produce_baozi(name):
    for i in range(1,11):
        time.sleep(1)
        print("%s的第%s个包子做好了" % (name,i))
        q.put(i)
        q.task_done()     #线程间通信
def consume_baozi(name):
    for i in range(1, 11):
        q.join()
        date=q.get()
        time.sleep(1)
        print("%s吃了第%s个包子"%(name,date))
p1=threading.Thread(target=produce_baozi,args=("p1",))
c2=threading.Thread(target=consume_baozi,args=("c2",))
c3=threading.Thread(target=consume_baozi,args=("c3",))
c1=threading.Thread(target=consume_baozi,args=("c1",))
c1.start()
c2.start()
c3.start()
p1.start()

一个输出:

p1的第1个包子做好了
p1的第2个包子做好了
c1吃了第1个包子
c2吃了第2个包子
p1的第3个包子做好了
c3吃了第3个包子
p1的第4个包子做好了
p1的第5个包子做好了
c1吃了第4个包子
p1的第6个包子做好了
c1吃了第5个包子
c1吃了第6个包子
p1的第7个包子做好了
c2吃了第7个包子
p1的第8个包子做好了
p1的第9个包子做好了
c3吃了第8个包子
p1的第10个包子做好了
c1吃了第9个包子
c2吃了第10个包子

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值