【发布时间】:2015-01-08 17:03:08
【问题描述】:
我正在寻找一个 python 包,它不仅可以在单台计算机中跨不同内核进行多处理,还可以在分布在多台机器上的集群中进行多处理。有很多不同的用于分布式计算的 Python 包,但大多数似乎都需要更改代码才能运行(例如,指示对象位于远程计算机上的前缀)。具体来说,我想要尽可能接近多处理pool.map 函数的东西。因此,例如,如果在一台机器上,脚本是:
from multiprocessing import Pool
pool = Pool(processes = 8)
resultlist = pool.map(function, arglist)
那么分布式集群的伪代码将是:
from distprocess import Connect, Pool, Cluster
pool1 = Pool(processes = 8)
c = Connect(ipaddress)
pool2 = c.Pool(processes = 4)
cluster = Cluster([pool1, pool2])
resultlist = cluster.map(function, arglist)
【问题讨论】:
-
可能需要比您想要的更多的设置,但您可以查看 celery 的分布式任务队列。 docs.celeryproject.org/en/latest/getting-started/…
-
我会去看看jug
-
我可能最终会使用 celery,但它需要进行大量设置,并且帮助文件很难遵循(脱节,而不是清晰的分步说明以及整个脚本的副本)结束)。 Jug 的文档讨论并行化,但不讨论跨不同计算机的并行化。
-
还有一个非常全面的解决方案列表:wiki.python.org/moin/ParallelProcessing
-
另外值得注意的是,有一个更新的解决方案类似于
pathos——一个名为dask的包。
标签: python multiprocessing distributed-computing