我如何获得在我的远程服务器上生成进程的 pathos?
How do I get pathos to spawn processes on my remote server?
我有 2 台电脑,都装有 pathos Python 模块。我有一个 Pathos 多处理池,并且一直在尝试使用以下代码让 Pathos 在两个 CPU 之间平均分配进程数:
from pathos.multiprocessing import ProcessPool
ngramPool = ProcessPool()
ngramPool.ncpus = 8
ngramPool.servers = ('localhost:5653','ec2-18-223-23-82.us-east-2.compute.amazonaws.com:5653')
questionNgrams = []
i = 0
previousI = 0
previousTime = time.time()
#Test questions
#questions = ["To whom do I owe this great pleasure","Who do I owe this great pleasure which is a great pleasure to","Who do I owe this great pleasure to"]
questionNgrams = ngramPool.map(n_gram.stringToNgrams,questions)
但是,我的本地 CPU 上没有 运行4 个进程,Amazon EC2 实例上有 4 个进程,而是所有 8 个进程都在我的本地处理器上 运行。我如何设置 pathos 以便它在我的 CPU 上生成 4 个进程,在 Amazon 实例上生成另外 4 个进程?
我是 pathos
作者。使用分布式资源并不像您希望的那样简单。您是正确的(在您的评论中)pathos
使用基于 RPC 的(包装在 SSH 中)连接。你也是正确的,因为你必须在远程主机上设置一个 ppserver
。如果需要建立 ssh 连接,则可以使用 pathos_connect
脚本(请参阅相关文档)或直接使用 pathos.secure
模块中的代码。请注意,您还需要确保您有一个有效的 ssh-agent
并设置了 ssh 密钥对身份验证(即在初始连接后不使用密码)。
话虽如此,但要具体获得 4 个远程工作人员和 4 个本地工作人员还是相当困难的——因为 ParallelPool
是动态负载平衡的。因此,如果您有 "quick" 到 运行 的任务,则绝大多数(如果不是全部)任务将在本地 运行 启动连接并发送任务并检索结果。比 运行 在本地完成作业花费更多的时间。您可以通过清零(或严格限制)池本地可用的 ncpus
来远程强制任务 运行,但是有多少作业 运行 将取决于本地可用任务的数量,以及完成单个作业所需时间与远程连接和 运行 作业所需时间的一些衡量标准。
我有 2 台电脑,都装有 pathos Python 模块。我有一个 Pathos 多处理池,并且一直在尝试使用以下代码让 Pathos 在两个 CPU 之间平均分配进程数:
from pathos.multiprocessing import ProcessPool
ngramPool = ProcessPool()
ngramPool.ncpus = 8
ngramPool.servers = ('localhost:5653','ec2-18-223-23-82.us-east-2.compute.amazonaws.com:5653')
questionNgrams = []
i = 0
previousI = 0
previousTime = time.time()
#Test questions
#questions = ["To whom do I owe this great pleasure","Who do I owe this great pleasure which is a great pleasure to","Who do I owe this great pleasure to"]
questionNgrams = ngramPool.map(n_gram.stringToNgrams,questions)
但是,我的本地 CPU 上没有 运行4 个进程,Amazon EC2 实例上有 4 个进程,而是所有 8 个进程都在我的本地处理器上 运行。我如何设置 pathos 以便它在我的 CPU 上生成 4 个进程,在 Amazon 实例上生成另外 4 个进程?
我是 pathos
作者。使用分布式资源并不像您希望的那样简单。您是正确的(在您的评论中)pathos
使用基于 RPC 的(包装在 SSH 中)连接。你也是正确的,因为你必须在远程主机上设置一个 ppserver
。如果需要建立 ssh 连接,则可以使用 pathos_connect
脚本(请参阅相关文档)或直接使用 pathos.secure
模块中的代码。请注意,您还需要确保您有一个有效的 ssh-agent
并设置了 ssh 密钥对身份验证(即在初始连接后不使用密码)。
话虽如此,但要具体获得 4 个远程工作人员和 4 个本地工作人员还是相当困难的——因为 ParallelPool
是动态负载平衡的。因此,如果您有 "quick" 到 运行 的任务,则绝大多数(如果不是全部)任务将在本地 运行 启动连接并发送任务并检索结果。比 运行 在本地完成作业花费更多的时间。您可以通过清零(或严格限制)池本地可用的 ncpus
来远程强制任务 运行,但是有多少作业 运行 将取决于本地可用任务的数量,以及完成单个作业所需时间与远程连接和 运行 作业所需时间的一些衡量标准。