队列,线程池,视图
队列
# 创建队列(可以指定长度),把任务往池里放,扔是一个线程,取是一个线程,下面代码里的数字是任务数
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() # 是否为满
?
生产者 消费者模式 场景