我正在寻找一个 python 包,它不仅可以在一台计算机的不同内核上进行多处理,而且还可以在分布在多台机器上的集群中进行多处理。有许多用于分布式计算的不同 python 包,但大多数似乎都需要更改代码才能运行(例如,表示对象位于远程机器上的前缀)。具体来说,我想要尽可能接近 multiprocessing 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)
原文由 Michael 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想要一个非常简单的解决方案,那么没有。
但是,有一个解决方案具有
multiprocessing
接口pathos
能够通过并行映射建立到远程服务器的连接,并进行多处理。如果你想要一个 ssh 隧道连接,你可以这样做……或者如果你可以使用不太安全的方法,你也可以这样做。
或者,您可以配置直接连接(无 ssh)
这有点挑剔,要使远程服务器正常工作,您必须预先在指定端口启动运行在
remote.computer.com
上的服务器——并且您必须确保本地主机和远程主机将允许直接连接或 ssh 隧道连接。另外,你需要有相同版本的pathos
和pathos
fork ofpp
在每台主机上运行。此外,对于 ssh,您需要运行 ssh-agent 以允许使用 ssh 进行无密码登录。但是,希望一切正常……如果您的函数代码可以使用
dill.source.importable
传输到远程主机。仅供参考,
pathos
早就应该发布了,基本上,在剪切新的稳定版本之前需要解决一些错误和界面更改。