第五章 高性能与并行计算

在高性能数值计算中,Python经常为人诟病的一个地方是它很慢,作为一种解释型的动态语言,它比C这样的语言要慢几个数量级。

通过向量化操作,使用NumPy执行的计算会和C几乎一样,因为NumPy会把Python代码替换为C代码。在难以进行向量化操作的情形下,我们也不需要把Python代码全部扔掉用C重写,本章会介绍与此相关的几种方案。

首先,当前的计算机中多核已经极普遍了。标准的Python进程仅运行于一个CPU核中,但将任务分发至多核,甚至是多机器都是可能的。在IPython中这个容易实现,MPI实现起来也不难。

另一个方案是,先排查出构成性能瓶颈的Python代码,将其替换为C。这要借助于Cython,不要怕,并没有你想像得那么难。

简言之,本章主要包含以下内容:

  • 如何使代码在多核中运行
  • 如何简单地实现MPI
  • 如何将Python代码转换为C
  • 如何在Cython中使用NumPy数组