1

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

  1. 设置具有安全身份验证的远程服务器或一组远程服务器。
  2. 安全地连接远程服务器。
  3. pool.map使用标准多处理包中的简单 API(如此相关问题中的伪代码)在远程服务器和我的本地计算机中的所有 CPU 上映射任务。

我没有看到 (1) 的示例,也不理解为 (2) 提供的隧道示例。该示例实际上并未连接到 localhost 上的现有服务。我还想知道我是否/如何要求此通信附带某种密码/密钥,以防止其他人连接到服务器。我知道这使用 SSH 身份验证,但缺少一个预先存在的密钥,该密钥只​​能确保流量在通过 Internet 时不会被读取,但不会阻止其他人劫持服务器。

4

1 回答 1

3

我是pathos作者。基本上,对于 (1),您可以使用pathos.pp通过套接字连接连接到另一台计算机。 pathos.pp具有与 几乎完全相同的 API pathos.multiprocessing,尽管pathos.pp您可以servers在设置Pool.

但是,如果您想与 SSH 建立安全连接,最好建立一个 SSH 隧道连接(如您链接到的示例中),然后将localhost本地端口号传递serversPool. pp-worker然后这将通过 ssh 隧道连接到远程。请参阅: 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使用并行映射调用 -way 作业pathos.multiprocessing.ProcessingPool您正在与pathos.pp. 这将最大限度地减少跨远程连接的通信。

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

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

于 2014-11-15T02:27:57.603 回答