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 带来的限制#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报