queue生产者消费者模型展示

python3版本是from queue import Queue
put是在队列尾部放入数据,如果队列已满这个线程会暂停,一直等待队列有空位置才可以放数据
get是从队列的头部获取数据,如果没有数据,线程同样会暂停,会hang
设置一个空Queue,执行q.get()会一直hang
很简单一个验证方案

from queue import Queue
q=Queue(10)
for i in range(100):
    q.put(i)

执行时候可以看到程序会hang

生产者消费者模型

from queue import Queue
q=Queue(10)
def producer():
    for i in range(20):
        q.put(i)
        print(f'线程{threading.current_thread().name},放入的是{i}')

def consumer():
    while not q.empty():
        time.sleep(1)
        result=q.get()
        print(f'线程{threading.current_thread().name},获取到{result}')
threading.Thread(target=producer,name='生产者').start()
threading.Thread(target=consumer,name='消费者').start()

运行结果

线程生产者,放入的是0
线程生产者,放入的是1
线程生产者,放入的是2
线程生产者,放入的是3
线程生产者,放入的是4
线程生产者,放入的是5
线程生产者,放入的是6
线程生产者,放入的是7
线程生产者,放入的是8
线程生产者,放入的是9
线程消费者,获取到0
线程生产者,放入的是10
线程消费者,获取到1
线程生产者,放入的是11
线程消费者,获取到2
线程生产者,放入的是12
线程消费者,获取到3
线程生产者,放入的是13
线程消费者,获取到4
线程生产者,放入的是14
线程消费者,获取到5
线程生产者,放入的是15
线程消费者,获取到6
线程生产者,放入的是16
线程消费者,获取到7
线程生产者,放入的是17
线程消费者,获取到8
线程生产者,放入的是18
线程消费者,获取到9
线程生产者,放入的是19
线程消费者,获取到10
线程消费者,获取到11
线程消费者,获取到12
线程消费者,获取到13
线程消费者,获取到14
线程消费者,获取到15
线程消费者,获取到16
线程消费者,获取到17
线程消费者,获取到18
线程消费者,获取到19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值