Python并发编程

简介

  • 多线程:threading,利用 cpu 和 io可以同时执行的原理,让 CPU 不会等待 IO 完成
  • 多进程:multiprocess,利用多核 CPU 的能力,真正的并行执行任务
  • 异步IO:asynio,在单线程利用 CPU 和 IO 同时执行的原理,实现函数异步执行

 

  • 使用 Lock 对共享资源加锁,防止冲突访问
  • 使用 Queue 实现不同线程/进程之间的数据通信,实现生产者-消费者模式
  • 使用线程池 Pool 进程池 Pool,简化线程/进程的任务提交、等待结束、获取结果
  • 使用subprocess启动外部程序的进程,并进行输入输出交互

怎样选择多进程、多线程、多协程

并发编程的三种方式#

多线程 Thread

多进程 Process

多协程 Coroutine

 

CPU 密集型计算和 IO 密集型计算#

CPU密集型(CPU-bound):

CPU密集型也叫计算密集型,是指 I/O 在很短的时间就可以完成,CPU 需要大量的计算和处理,特点是CPU占用率相当高。

例如:压缩解压缩、加密解密、正则表达式搜索

 

IO 密集型(I/O bound):
IO 密集型指的是系统运作大部分的状况是 CPU 在等 I/O (硬盘/内存)的读/写操作,CPU 占用率仍然较低。

例如:文件处理程序、网络爬虫程序、读写数据库程序

 

根据任务选择对应技术#

 全局解释器锁 GIL

Python 速度慢的两大原因#

 GIL是什么#

 为什么有GIL这个东西#

 怎样规避 GIL 带来的限制#

 

posted @   JJJhr  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示
CONTENTS