文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
9.1 Python并发的基本概念
泛泛而谈,Python有3种并发编程的方法:多线程、多进程和消息传递接口(MPI)。
对于GUI和调用外部库的应用程序来说,由于不占用Python解释器,使用基于多线程的代码就足够了。我们随后会见到,在运行纯Python程序时,你无法占用多于一个的运算核心。在HDF5方面,使用多线程也不会带来性能提升,因为HDF5库会将所有的调用都序列化。
multiprocessing是一个Python最近支持的内建模块,它提供了基于fork()的基本并发处理支持。其主要的限制是你的并发处理不能共享同一个HDF5文件,哪怕该文件是以只读的方式打开。这是HDF5库的一个限制。基于多进程的代码适合那些需要长期运行、CPU密集而数据I/O相对较少的程序。它是让Python并发代码使用多于一个运算核心最简单的方法,强烈推荐给通用型计算。
如果上面两个不能满足你,那么基于MPI的并发HDF5就是目前为止你最好的选择。MPI是HDF5库官方“推荐”支持的并发机制。它对并发的进程数没有限制,所有的进程都能共享同一个HDF5文件,读写数据并修改文件结构。用这个方法编写的程序需要更仔细一点,但它的确是HDF5并发环境下最优雅也是最高性能的解决方案。
另外,第四个并发计算机制正在变得越来越流行。Ipython——你可能已经开始用它来作一个更加方便的解释器接口,并且拥有自己的基于ZeroMQ网络系统的集群能力。其后端甚至可以使用MPI来提升并发性能。目前作者对于实际运行于IPython并发模型上的h5py程序所知不多。但你一定要记得去关注它,不说别的,光是IPython为计算机集群提供的非常简便的界面就值回票价。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论