并发性与平行计算
当一个计算机看起来像是在同时执行多个任务时,我们称之为并发。例如在一个单核计算机上,操作系统会快速切换运行在CPU上的程序。而不同程序间的交叉执行会让程序看起来好像是在同时执行一样。
平行计算则是真正意义上的同时执行多任务。具有多个CPU的计算机能够同时执行多个程序,每个CPU核执行不同程序的指令,进而允许每个程序都在同一时刻向前推进。
在一个单独的程序内,并发是一种可以让程序员更轻松地去解决一些问题的工具。并发程序可以激活一些不同的执行通道来使程序在向前推进时看起来既同步又独立。
并发与平行最关键的不同在于加速性。当一个程序中两个不同的执行通道平行推进时,做完所有工作的时间将被减半,即执行速度加倍。作为对比,并发程序可能会看起来有成千上万个独立的执行通道在运行,而事实上完成所有工作的时间并不会减少。
Python可以让写并发程序变得十分简单。同时,Python也可以通过系统调用、子进程以及C扩展被用做平行计算。但是让并发Python代码真正地平行执行是非常困难的,理解如何在这些有着细微不同的情景下最好的利用Python变得十分重要。