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()

运行结果

Python -- 生产者消费者_第1张图片

你可能感兴趣的:(Python高级,python,开发语言,后端)