队列,线程池,视图
队列
# 创建队列(可以指定长度),把任务往池里放,扔是一个线程,取是一个线程,下面代码里的数字是任务数
from random import randint
from queue import Queue
from threading import Thread
my_q = Queue(10) # 容量 maxsize 队列大小(队列长度)
def f(my_que): f是放,f1是取 如果是for i in range(100):,就 for i in range(10): 10个10个放,用完这10个再放10个
num = randint(0,1000)
my_que.put(num) #put是放
print("添加数据{}".format(num))
def f1(my_que):
for j in range(5):
num = my_que.get() #取
print(num)
print("f1提取到的数据{}".format(num))
def f2(my_que):
for k in range(5): #如果取的大于池子里的,它就不会结束,一直卡在那
num = my_que.get() #取
print(num)
print("f2提取到的数据{}".format(num))
t0 = Thread(target=f,args=(my_q,)) #元组(my_q,)
t1 = Thread(target=f1,args=(my_q,)) #子线程
t2 = Thread(target=f2,args=(my_q,))
t0.start()
t1.start()
t2.start()
t0.join()
t1.join()
t2.join()
:
添加数据485
添加数据343
添加数据358
添加数据439
添加数据332
添加数据702
添加数据117
添加数据346
添加数据89
添加数据69
485
f1提取到的数据485
343
f1提取到的数据343
358
f1提取到的数据358
439
f1提取到的数据439
332
f1提取到的数据332
702
f2提取到的数据702
117
f2提取到的数据117
346
f2提取到的数据346
89
f2提取到的数据89
69
f2提取到的数据69
my_q.put() # 添加任务
my_q.qsize() # 判断队列中还有几个任务没有被取走
print(my_q.qsize())
2
my_q.get() # 取任务
my_q.empty() # 是否为空
my_q.full() # 是否为满
生产者 消费者模式 场景
一个只负责生产