我试图在几台不同的计算机上使用多处理,pathos似乎是面向:“seems是一种异构计算的框架。它主要提供了跨异构资源配置和启动并行计算的通信机制。”然而,在查看文档时,我对如何建立和运行集群感到困惑。我希望:
pool.map这样简单的API (如这个相关问题中的伪码 ),在远程服务器和本地计算机中的所有CPU之间映射一个任务。我没有看到(1)的例子,也不理解为(2)提供的隧道实例。该示例实际上没有连接到本地主机上的现有服务。我还想知道是否/如何可以要求这种通信带有某种密码/密钥,从而阻止其他人连接到服务器。我知道这是使用SSH身份验证的,但没有一个预先存在的密钥,该密钥只确保流量在通过Internet时不会被读取,但无助于防止其他人劫持服务器。
发布于 2014-11-15 02:27:57
我是pathos的作者。基本上,对于(1)您可以使用pathos.pp通过套接字连接连接到另一台计算机。pathos.pp的API与pathos.multiprocessing几乎完全相同,尽管使用pathos.pp,您可以在设置Pool时使用关键字servers提供要连接到的远程主机的地址和端口。
但是,如果要与SSH建立安全连接,最好建立SSH隧道连接(如链接到的示例),然后将localhost和本地端口号传递给Pool中的servers关键字。然后通过ssh隧道连接到远程pp-worker。见:ppmap2.py和http://www.cacr.caltech.edu/~mmckerns/pathos.html
最后,如果您在远程服务器上使用pathos.pp,那么您应该已经在执行(3)了。但是,您可以更高效地嵌套并行映射…(对于一组令人尴尬的并行足够多的作业)。因此,首先使用pathos.pp.ParallelPythonPool构建跨服务器的并行映射,然后在与pathos.pp映射的函数中使用pathos.multiprocessing.ProcessingPool中的并行映射调用N-way作业。这将使远程连接之间的通信最小化。
此外,如果您有SSH代理为您工作,则不需要提供ssh密码。见:http://mah.everybody.org/docs/ssh。路径假设跨远程服务器的并行映射,您将让ssh代理工作,并且每次连接时都不需要输入密码。
编辑:在您的问题上添加了示例代码:基于分布式集群的Python多处理
https://stackoverflow.com/questions/26939704
复制相似问题