并发并行同步和异步
Posted magicdata
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发并行同步和异步相关的知识,希望对你有一定的参考价值。
并发、并行、同步和异步
在学习线程和进程后,对于并行、并发、同步和异步这几个概念我们需要更深层次的了解一下。
串行:同一个时间段只干一件事
并行:同一个时间段可以干多件事
并发 vs 并行
并发是指一个时间段内,有几个程序在用一个CPU上运行,但是任意时刻只有一个程序在CPU上运行。(时间片轮转调度算法)
并行是指任意时刻点上,有多个程序同时运行在多个CPU上,即每个CPU独立运行一段程序。
并行的最大数量和CPU的数量是一致的。
同步 vs异步:
- 同步是指代码调用IO操作时,必须等待IO操作完成返回才调用的方式
- 异步是指代码调用IO操作时,不必等待IO操作完成返回才调用的方式
多线程:交替执行,另一种意义上的串行(python底层解释器原因)
多进程:并行执行,真正意义上的并行
- 多进程 VS 多线程:
- 由于全局解释器GIL的存在,python的多线程无法利用多核的优势,所以不适合计算密集型任务,适合IO密集型任务。
- CPU密集型任务适合和使用多进程
- 进程切换代价要高于线程
- 线程之间可以共享全局变量,但是进程不行。进程之间数据完全隔离
以上是关于并发并行同步和异步的主要内容,如果未能解决你的问题,请参考以下文章