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 @ 2024-08-07 18:10  JJJhr  阅读(8)  评论(0编辑  收藏  举报