python并发编程实战(一):python并发编程简介

学习教程地址

这篇教程是:b站up主蚂蚁学Python的视频教程的笔记,原视频地址:【2021最新版】Python 并发编程实战,用多线程、多进程、多协程加速程序运行

为什么要引入并发编程

场景1:一个网络爬虫,按顺序爬取花了1个小时,采用并发下载减少到20分钟!
场景2:一个APP应用,优化前每次打开页面需要3s,采用异步并发提升到每次200毫秒;

  • 引入并发,是为了提升程序运行的速度
  • 学习并掌握并发编程,是高级别+高薪资程序员的必备能力

有哪些程序提速的方法


单线程串行:有一个线程,开始执行以后,CPU先执行,然后进行IO(数据读取和写入),在IO期间,CPU是不做什么事情的,IO完成后,CPU继续开始运算,然后进行下一次IO,整体的时间有些浪费,因为在IO期间,CPU是等待的状态
多线程并发:CPU开始执行,如果遇到IO,它会切换到另一个task进行执行,当IO完成之后,会通知CPU进行下一步的处理。电脑中的CPU和IO是可以同时并行进行的,IO的执行,比如读取内存、磁盘、网络,它的过程中是不需要CPU的参与的,这样CPU是可以释放出来,来执行其他task,实现并发的加速,但这种原理上,还是一个CPU进行运行的
多CPU并行:当前我们电脑都是多核CPU,所以很自然的,我们可以实现多个CPU多条线,同时真正的并行执行进行加速
多机器并行:当前进入大数据时代,很多程序的运行都是可以用很多机器并行来进行运算,每个机器上有很多CPU,每个CPU上也可以进行并发的执行

python对并发编程的支持

  • 多线程:threading,利用CPU和IO同时执行的原理,让CPU不会干巴巴等待IO完成

  • 多进程:multiprocessing,利用多核CPU的能力,真正的并行执行任务

  • 异步IO:asyncio,在单线程利用CPU和IO同时执行的原理,实现函数异步执行

  • 使用Lock对资源加锁,防止冲突访问

  • 使用Queue实现不同线程/进程之间的数据通信,实现生产者—消费者模式

  • 使用线程池Pool/进程池Pool,简化线程/进程的任务提交、等待结束、获取结果

  • 使用subprocess启动外部程序的进程,并进行输入/输出交互

posted @ 2022-07-02 10:47  cnhkzyy  阅读(89)  评论(0编辑  收藏  举报