我试图在多个不同的计算机上使用多处理,pathos
似乎geared towards:“Pathos是异构计算的框架。它主要提供用于配置和启动并行的通信机制跨异构资源的计算。“但是,在查看文档时,我不知道如何启动和运行集群。我期待:
pool.map
之类的简单API(如此相关问题中的pseudocode),在远程服务器和本地计算机中的所有CPU上映射任务。我没有看到(1)的示例,我不理解为(2)提供的tunnel example。该示例实际上并未连接到localhost上的现有服务。我还想知道是否/如何要求此通信带有某种密码/密钥,以防止其他人连接到服务器。我知道这使用SSH身份验证,但缺少一个预先存在的密钥,它只能确保流量在通过Internet时不会被读取,但不会阻止其他人劫持服务器。
答案 0 :(得分:2)
我是pathos
作者。基本上,对于(1),您可以使用pathos.pp
通过套接字连接连接到另一台计算机。 pathos.pp
与pathos.multiprocessing
的API几乎完全相同,但使用pathos.pp
时,您可以在设置时使用关键字servers
提供要连接的远程主机的地址和端口向上Pool
。
但是,如果要与SSH建立安全连接,最好建立SSH隧道连接(如链接到的示例中),然后传递localhost
和本地servers
中Pool
关键字的端口号。然后,它将通过ssh隧道连接到远程pp-worker
。看到:
https://github.com/uqfoundation/pathos/blob/master/examples/test_ppmap2.py和
http://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