立即学习:https://edu.csdn.net/course/play/24454/306796?utm_source=blogtoedu
import time
from multiprocessing.dummy import Pool
def p_str(str):
print("处理:",str)
time.sleep(2)
print("处理完毕!")
def main():
li = ["任务1","任务2","任务3","任务4","任务5"]
# 模拟单线程串行方式进行任务处理,并检查耗耗时
single_start_time = time.time()
for i in range(len(li)):
p_str(li[i])
single_end_time = time.time()
print("单线程处理任务总耗时:{}".format(single_end_time-single_start_time))
print("#"*40)
# 模拟线程池的方式进行任务处理,并检查耗时
multi_start_time = time.time()
# 首先,构建一个5线程池
pool = Pool(5)
# 通过map方法,将任务列表li中的元素传递给p_str函数进行处理
pool.map(p_str,li)
multi_end_time = time.time()
print("单线程处理任务总耗时:{}".format(multi_end_time-multi_start_time))
if __name__ == '__main__':
main()
线程池,会导致处理函数的输出结果出现错乱。
处理: 任务1
处理完毕!
处理: 任务2
处理完毕!
处理: 任务3
处理完毕!
处理: 任务4
处理完毕!
处理: 任务5
处理完毕!
单线程处理任务总耗时:-10.00244665145874
########################################
处理:处理: 任务1
处理: 任务3
任务2处理:
处理: 任务5任务4
处理完毕!处理完毕!处理完毕!
处理完毕!
处理完毕!
单线程处理任务总耗时:-2.2071752548217773
[Finished in 12.4s]