python:一文搞懂多线程,多进程,异步协程的使用场景

本文通过四个案例对比了单线程、多线程、多进程和异步协程在不同场景下的速度,揭示了它们在CPU计算密集型、I/O密集型任务中的表现。案例表明,进程池在纯CPU计算中占优,异步协程在CPU耗时等于IO耗时的情况下更优,线程池适合少量CPU计算和大量IO操作,而单线程则适用于极少量CPU计算。
摘要由CSDN通过智能技术生成

本文将使用场景化为案例,将单线程,多线程,多进程,异步协程的速度进行对比

对比速度时,   >表示 速度快于  >>表示速度远快于  =表示速度差不多 >>>>表示速度远远快于

电脑硬软件配置:

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
多线
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值