Python -- 生产者消费者

代码

# -*- coding: utf-8 -*-
# @Author  : markadc
# @Time    : 2021/4/14 11:43

from queue import Queue
import time
import threading

# maxsize: 指定队列最大长度
q = Queue(maxsize=10)


# 生产者
def product(name):
    count = 0
    while True:
        # 只要队列没有满,就一直往队列里生产新的值
        if not q.full():
            count += 1
            q.put('{}-玩具枪-{}'.format(name, count))
            print('{}: (生产了玩具枪:{}把) '.format(name, count))
            time.sleep(0.5)
        else:
            print("队列满了,正在等待 ")
            time.sleep(2)


# 消费者
def consume(name):
    while True:
        # 只要队列不为空,就一直从队列里取出值
        if not q.empty():
            print('{}: (使用了{}) '.format(name, q.get()))
            time.sleep(1)
        else:
            print("队列空了,正在等待 ")
            time.sleep(2)


def main():
    names = ['thomas', 'clos', 'luanke', 'mark']
    for name in names:
        # 只指定thomas为生产者,其他都为消费者
        if name == "thomas":
            t = threading.Thread(target=product, args=(name,))
            t.start()
        else:
            t = threading.Thread(target=consume, args=(name,))
            t.start()


if __name__ == '__main__':
    main()

运行结果

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值