Python 多核并行计算在海量星表交叉证认中的应用

本文在高丹等人的工作基础上, 选用Python和C 语言改写了交叉证认程序, 采用HTM 划分方法分割星表数据, 并利用Python 的subprocess 模块发起多个子进程来实现并行计算, 在获得较高灵活性的同时, 大幅提升了程序性能.

1 编程语言的选择

Python是一种面向对象的、解释型的程序设计语言, 开源、免费, 语法简明,功能强大, 运行稳定, 既可用来快速编写脚本程序,也可用来开发大规模的应用软件, 应用十分广泛.

Python 拥有极其丰富的类库, 使开发变得容易. 针对运行速度慢的问题, Python 提供了面向C/C++ 语言的应用程序编程接口, 程序员可使用C/C++ 编写扩展模块, 从而提升Python 程序的执行性能. 由于诸多优点, 越来越多的科研项目开始使用Python 来开发应用程序.

因此, 我们选用Python 语言来编写程序主体,以提升开发效率; 核心计算部分用C 语言写成Python 模块, 以提高程序的计算性能.

2 Python 并行计算方法

当前高性能通用CPU 的发展趋势是在一个物理芯片上集成多个处理器核, 即多核CPU. 在这种SMP 架构上编写并行程序最常用的方法是使用多线程. 然而, 由于Python 虚拟机使用全局解释器锁(Global Interpreter Lock, 简称GIL)来互斥线程对Python 虚拟机的使用, 使得在同一时刻只能有一个线程访问Python 虚拟机所提供的API, 从而导致在一个Python 程序内即使有多个线程, 也只能串行执行,不能发挥多核CPU 的性能. 要使Python 程序充分利用多核, 只能通过“发起多个进程, 由系统调度分配给多个处理器核”的方法来实现.

尽管目前已经有一些针对Python 的并行库(如pp,mpi4py 等), 但在实际应用中, 直接操控进程往往比使用封装好的库更加灵活方便. 在这里, 我们结合实际情况, 采用了直接操控进程的方法.

Python 多核并行计算在海量星表交叉证认中的应用 PDF文档下载

具体下载目录在 /2012年资料/10月/23日/Python 多核并行计算在海量星表交叉证认中的应用 PDF

python 单核性能 python多核计算_python多核并行计算