并发、并行、同步和异步
在学习线程和进程后,对于并行、并发、同步和异步这几个概念我们需要更深层次的了解一下。
- 串行:同一个时间段只干一件事
- 并行:同一个时间段可以干多件事
- 并发 vs 并行
- 并发是指一个时间段内,有几个程序在用一个CPU上运行,但是任意时刻只有一个程序在CPU上运行。(时间片轮转调度算法)
- 并行是指任意时刻点上,有多个程序同时运行在多个CPU上,即每个CPU独立运行一段程序。
- 并行的最大数量和CPU的数量是一致的。
- 同步 vs异步:
- 同步是指代码调用IO操作时,必须等待IO操作完成返回才调用的方式
- 异步是指代码调用IO操作时,不必等待IO操作完成返回才调用的方式
- 多线程:交替执行,另一种意义上的串行(python底层解释器原因)
- 多进程:并行执行,真正意义上的并行
- 多进程 VS 多线程:
- 由于全局解释器GIL的存在,python的多线程无法利用多核的优势,所以不适合计算密集型任务,适合IO密集型任务。
- CPU密集型任务适合和使用多进程
- 进程切换代价要高于线程
- 线程之间可以共享全局变量,但是进程不行。进程之间数据完全隔离
原文地址:https://www.cnblogs.com/magicdata/p/12316639.html
时间: 2024-11-02 09:38:18