我有为共享内存机器(在C和FORTRAN中)编码OpenMP的经验,可以执行简单的任务,例如矩阵加法,乘法等(仅看它如何与LAPACK竞争)。我知道OpenMP足以执行简单的任务,而无需查看文档。
最近,我转向项目的Python,除了绝对的基础知识之外,我对Python没有任何经验。
我的问题是:
在Python中使用OpenMP的 最简单 方法是什么?最简单的说,我是指在程序员方面花费最少的工作的人(即使这是以增加系统时间为代价的)?
我使用OpenMP的原因是因为可以将串行代码转换为工作的并行代码,并!$OMP散布几秒钟。实现 粗略 并行化所需的时间非常短。有什么办法可以在Python中复制此功能?
!$OMP
通过浏览SO,我可以找到:
还有更多吗?哪个最符合我的问题?
由于GIL,在CPython中没有必要将线程用于CPU密集型任务。您需要进行多重处理或使用在计算过程中释放GIL的C扩展,例如,一些numpy函数示例。
您可以轻松地在示例Cython中编写使用多个线程的C扩展。