1. 队列的理解
1.1 什么是队列:
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和
栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
1.2 为什么要使用队列:
当使用多线程时,一个或多个线程生产数据,另一个或多个线程处理数据,如果生产数据与处理数据速率不匹配时,使用队列可作
为生产出来的数据的缓冲区,当处理数据的线程空闲时,从队列的队头取出数据进行处理,即可实现生产数据和处理数据并发执行
2. 导入第三方模块
2.1 import threading
from mytimeit import timeit //导入已经实现的mytimeit中的timeit方法
from queue import Queue //导入队列模块
3. 使用队列实现多个累加任务
3.1 将累加结果入队
def job(li, queue):
queue.put(sum(li)) //.put方法为入队,传入的参数为入队的数据
@timeit //记录函数运行时间
def use_thread():
q = Queue() //实例化一个队列
lis = [range(5), range(2,10), range(1000,20000), range(2000,20000)]
threads = []
for li in lis:
t = threading.Thread(target=job,args=(li, q))
t.start()
threads.append(t)
[thread.join() for thread in threads]
results = [q.get() for li in lis] //获取结果
print(results)