我是一个C ++人,我喜欢并行,HPC应用程序,我非常了解OpenMP。现在我正在学习python,我知道基础知识。
作为提高我的python技能的个人项目,我想实现Elkan algorithm for k-means的并行版本。使用此算法的C和OpenMP实现的并行版本为present in VLFeat。
现在,我知道如何在python中轻松实现Elkan算法......但是并行性呢?关于OpenMP的一个很酷的事情是你采用串行代码,你添加20170908.2
和SBAM,它是并行的!
如何在python中实现类似的功能?或者我是否必须从头开始设计并行算法,即不首先编写串行版本然后使其并行,但是明确地管理线程等(这是一个巨大的痛苦)?
答案 0 :(得分:0)
首先,Python中的CPU并行性只能通过本机代码或多个进程获得。
其次,与OpenMP的类比将是multiprocessing模块。
它有很多功能,但对于简单的for循环等,它很容易使用。
results = map(operation, things)
会变成
import multiprocessing
pool = multiprocessing.Pool()
results = pool.map(operation, things)