并发性和并行性到底是什么? 其实有很多人都是不理解的这篇文章告诉你。

  在现代科技时代,计算机的性能越来越强大,但是在处理大规模数据时,单个计算机的计算能力仍然有限。这时候,我们就需要使用并发性和并行性来提高计算机的运算速度。虽然它们听起来很相似,但它们的概念和实现方式是有区别的。

首先我们可以看一张图:

zyc_img

看完这张图你可能还是不理解,不要着急听完娓娓道来。

并发性:

  并发性可以理解为电脑的处理器上一个线程里运行了两个程序,就如上图,一会程序1一会程序2,虽然从物理层面来看的话,两个程序都是同一时间运行的,其实不然,是执行完程序1切换到程序2一个来回切换的过程,只不过是在同一时间段去运行,所以就可以理解为,并发性是在同一时间间隔去执行程序,并不是真正的同一时间点去运行。

  其实并发性就如同Python3.4版本后支持的异步关键字,asyncio,asyncio底层是使用协程去运行程序也就是并发性去实现,使用await关键字决定在哪一个时间段去切切换程序,实现物理层面上的同时执行。

并发性的优点:

  • 资源利用率更好

  • 程序设计在某些情况下更简单

  • 程序响应更快

  • 提高系统性能

并发性的缺点:

  • 容易引起线程或者协程安全性问题

  • 可能会增加系统的复杂度

并行性:

  并行性可以理解为根据电脑的处理器数量开启多个进程去处理程序,是真正意义上的同一时间运行。在同一时间点去运行程序,就比如你电脑开了网易云音乐去听歌,也开了Vscode去敲代码,都是同一时间点去运行,这也就是并行性。比如上图是开了两个进程同时去执行我们的程序一和程序二,和并发性还是有区别的。

并行性的优点:

  • 可以在同一时间运行程序

  • 程序运行非常高效

  • 适用于大规模数据

  • 可以利用计算机硬件资源

并发性的缺点:

  • 实现比较复杂

  • 对于任务需要分配和管理

  • 需要处理器通信和同步问题

  • 对本地资源要求较大

总结:

综上所述,并发性和并行性都是多任务处理的方法,但是它们的优缺点和使用场景不同。并发性指的是一个处理器在同一时间可以处理多个任务,通过快速的切换来模拟多任务同时运行的效果。与此不同的是,并行性是指多个处理器同时处理多个任务,每个处理器独立工作,可以提高整个系统的运行速度。