【问题标题】:How to easily implement parallel for in python?如何在python中轻松实现parallel for?
【发布时间】:2017-09-11 09:48:49
【问题描述】:

我是 C++ 人,我喜欢并行性、HPC 应用程序,而且我非常了解 OpenMP。现在我正在学习python,我知道了基础知识。

作为提高我的python技能的个人项目,我想实现Elkan algorithm for k-means的并行版本。该算法的 C 和 OpenMP 实现的并行版本是 present in VLFeat

现在,我知道如何在 python 中轻松实现 Elkan 算法了……但是并行性呢? OpenMP 最酷的地方在于,您使用串行代码,添加#pragma omp parallel for 和 SBAM,它是并行的!

如何在 python 中实现类似的功能?还是我必须从一开始就设计并行算法,即不是先编写串行版本然后使其并行,而是显式管理线程等(这是一个巨大的痛苦)?

【问题讨论】:

标签: python multithreading parallel-processing openmp


【解决方案1】:

首先,Python 中的 CPU 并行性只能通过本机代码或通过多个进程来获得。

其次,与 OpenMP 的类比是 multiprocessing 模块。

它有很多事情要做,但对于简单的 for 循环等来说,它很容易使用。

results = map(operation, things)

会变成

import multiprocessing
pool = multiprocessing.Pool()
results = pool.map(operation, things)

【讨论】:

  • 所以您是在告诉我,在 Python 中并行性不是通过多线程而是通过仅分配多个进程来实现的?哇,这听起来有点矫枉过正!
  • 由于Global Interpreter Lock,与 C++ 中的线程相比,python 中的线程非常有限
  • @justHelloWorld,进程与线程本身的开销不一定完全不同,具体取决于程序。 Python、MRI Ruby 和 Javascript 都使用多处理范例。这并非没有优势。进入 C++ 并行性,您喜欢听过/使用过MPI
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 2021-11-14
  • 1970-01-01
  • 2015-12-25
  • 2011-03-17
  • 1970-01-01
相关资源
最近更新 更多