使用Pathos的分布式集群Python多处理

时间:2014-11-14 22:11:00

标签: python multiprocessing python-multiprocessing pathos

我试图在多个不同的计算机上使用多处理,pathos似乎geared towards:“Pathos是异构计算的框架。它主要提供用于配置和启动并行的通信机制跨异构资源的计算。“但是,在查看文档时,我不知道如何启动和运行集群。我期待:

  1. 使用安全身份验证设置远程服务器或一组远程服务器。
  2. 安全连接远程服务器。
  3. 使用标准多处理包中的pool.map之类的简单API(如此相关问题中的pseudocode),在远程服务器和本地计算机中的所有CPU上映射任务。
  4. 我没有看到(1)的示例,我不理解为(2)提供的tunnel example。该示例实际上并未连接到localhost上的现有服务。我还想知道是否/如何要求此通信带有某种密码/密钥,以防止其他人连接到服务器。我知道这使用SSH身份验证,但缺少一个预先存在的密钥,它只能确保流量在通过Internet时不会被读取,但不会阻止其他人劫持服务器。

1 个答案:

答案 0 :(得分:2)

我是pathos作者。基本上,对于(1),您可以使用pathos.pp通过套接字连接连接到另一台计算机。 pathos.pppathos.multiprocessing的API几乎完全相同,但使用pathos.pp时,您可以在设置时使用关键字servers提供要连接的远程主机的地址和端口向上Pool

但是,如果要与SSH建立安全连接,最好建立SSH隧道连接(如链接到的示例中),然后传递localhost和本地serversPool关键字的端口号。然后,它将通过ssh隧道连接到远程pp-worker。看到: https://github.com/uqfoundation/pathos/blob/master/examples/test_ppmap2.pyhttp://www.cacr.caltech.edu/~mmckerns/pathos.html

最后,如果您使用pathos.pp与远程服务器,如上所述,您应该已经在做(3)。但是,它可以更高效(对于一个令人尴尬的并行足够的作业集),你嵌套并行映射...所以首先使用pathos.pp.ParallelPythonPool在服务器之间构建一个并行映射,然后调用N方式作业,使用pathos.multiprocessing.ProcessingPool中与您pathos.pp映射的函数内的并行映射。这将最大限度地减少远程连接的通信。

此外,如果您有ssh-agent为您工作,则不需要提供SSH密码。见:http://mah.everybody.org/docs/ssh。 Pathos假设跨越远程服务器的并行映射,您将使用ssh-agent,并且每次连接时都不需要输入密码。

编辑:在此处添加了关于您问题的示例代码:Python Multiprocessing with Distributed Cluster