Python中的并行性


问题内容

在Python中实现并行性有哪些选择?我想对一些非常大的栅格执行一堆CPU限制的计算,并希望将它们并行化。来自C背景,我熟悉三种并行处理方法:

  1. 消息传递过程,可能分布在整个集群中,例如 MPI
  2. 使用 pthreadsfork()pipe() 等显式共享内存并行性。人
  3. 使用 OpenMP 隐式共享内存并行性。

确定使用方法是一种权衡的练习。

在Python中,有哪些可用的方法,它们的特点是什么?是否有可群集的 MPI 克隆?实现共享内存并行性的首选方式是什么?我听说过有关 GIL的
问题以及对 tasklet的 提及。

简而言之,在它们之间进行选择之前,我需要了解有关Python中不同的并行化策略的哪些知识?


问题答案:

通常,您描述一个CPU限制计算。这不是Python的优势。从历史上看,两者都不是多处理。

主流的Python解释器中的线程已被可怕的全局锁所统治。新的多处理API可以解决此问题,并提供带有管道和队列等的工作池抽象。

您可以使用CCython编写对性能有严格要求的代码,并使用Python粘合。