本文将使用场景化为案例,将单线程,多线程,多进程,异步协程的速度进行对比
对比速度时, >表示 速度快于 >>表示速度远快于 =表示速度差不多 >>>>表示速度远远快于
电脑硬软件配置:
CPU 6600HS, 6核12线程
GPU 16G,打开电脑后,可用内存不到7G
python版本 3.8.5
--------------------------
案例一:
定义一个函数,计算一亿次,循环该函数5次,也就是共计算5亿次
CPU表示我不是人,但你做的不是人事.
def fnc():
n = 0
[n * i for i in range(100000000)]
k = []
for j in range(5):
p = Process(target=fnc)
k.append(p)
p.start()
for p in k:
p.join()
fnc使用列表推导式
单线程耗时 22.95119619369507
多线程from threading import Thread 23.681288480758667
多进程from multiprocessing import Process 6.752433776855469
线程池from concurrent.futures import ThreadPoolExecutor 21.067291736602783
进程池from concurrent.futures import ProcessPoolExecutor 6.5641186237335205
多进程,多线程很吃GPU, 5个进程或进程GPU使用率从45%--80%甚至达到90%
异步协程 21.282711505889893 GPU使用率最高在50%
fnc函数不使用列表推导式,只用for 循环
单线程耗时 15.85204529762268
多线