|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# 队列queue用来存储数据,先进来的先出去(FIFO)当队列满了之后就不在存了,.get提取数据,.put获得数据
# 后面会接触到存储数据的栈,后进来的先出去(LIFO),就像‘先穿袜子再穿鞋,而先脱鞋后脱袜子’的关系
- from threading import Thread, current_thread
- import time
- import random
- from queue import Queue
- que = Queue(5) # 储存5个数据的队列
- class ProducerThread(Thread):
- def run(self):
- name = current_thread().getName()
- nums = range(100)
- global que
- while True: # 死循环用来测试
- num = random.choice(nums) # 获得0-99中的一个随机数
- que.put(num) # 队列获得这个随机数
- print('生产者%s生产了数据%s' % (name, num))
- t = random.randint(1, 3)
- time.sleep(t)
- print('生产者%s--睡眠了%s秒' % (name, t))
- class ConsumerThread(Thread):
- def run(self):
- name = current_thread().getName()
- global que
- while True:
- num = que.get()
- que.task_done()
- print('消费者%s消耗了数据%s' % (name, num))
- t = random.randint(1, 5)
- time.sleep(t)
- print('消费者%s--睡眠了%s秒' % (name, num))
- p1 = ProducerThread(name='p1')
- p1.start() # 开始运行,不然程序无执行
- c1 = ConsumerThread(name='c1')
- c1.start()
- c2 = ConsumerThread(name='c2')
- c2.start()
复制代码 |
|