在亚马逊云实例之间使用Python多进程
我想在几个亚马逊EC2实例上运行一个长时间的Python分析过程。我的代码已经使用了Python的multiprocessing
模块,可以充分利用单台机器上的所有核心。
这个分析过程是完全并行的,每个实例之间不需要互相通信。所有的工作都是基于文件的,每个进程单独处理一个文件……所以我打算在所有节点上挂载同一个S3存储。
我在想有没有人知道一些教程(或者有什么建议)来设置这个多进程环境,这样我就可以同时在任意数量的计算实例上运行它。
3 个回答
0
我最近在研究IPython,发现它支持在多个主机上进行并行处理,而且这个功能是开箱即用的:
http://ipython.org/ipython-doc/stable/html/parallel/index.html
0
我会使用dumbo。它是一个用Python写的工具,可以和Hadoop一起使用,而且和亚马逊的弹性MapReduce兼容。你只需要在你的代码周围写一个小工具来和dumbo结合起来。需要注意的是,你可能只需要一个只做“映射”的任务,而不需要“归约”步骤。
4
文档里提供了一个很好的方法,可以让你在多台机器上使用多进程。使用s3是一个不错的选择,可以在多个ec2实例之间共享文件,但通过多进程,你可以共享队列和传递数据。
如果你能使用hadoop来处理并行任务,那是一个非常好的方法,可以在多台机器之间实现并行处理。不过,如果你需要大量的进程间通信(IPC),那么自己用多进程构建解决方案也不是太糟糕。
只要确保把你的机器放在同一个安全组里就行了 :-)