Python 跨多台服务器分散计算

Python 跨多台服务器分散计算,python,parallel-processing,Python,Parallel Processing,我有一个公式,大约需要0.5秒来计算。但是,我需要使用不同的值执行此计算100万次。简化公式的一个示例: y = a + b 其中我有一百万个a和b的组合,它们都需要计算。这100万个组合保存在名为“组合”的列表中。我使用Python 我的想法是为每10万次计算旋转一个AWS实例,因此在本例中,我需要10次。然后将组合列表分为10个部分,第1部分=组合[:100000]等。。然后我必须向每个AWS实例发送组合的子集 但我怎样才能做到最好呢?我的想法是拥有一个可供所有实例访问的共享卷,并在该卷上

我有一个公式,大约需要0.5秒来计算。但是,我需要使用不同的值执行此计算100万次。简化公式的一个示例:

y = a + b
其中我有一百万个a和b的组合,它们都需要计算。这100万个组合保存在名为“组合”的列表中。我使用Python

我的想法是为每10万次计算旋转一个AWS实例,因此在本例中,我需要10次。然后将组合列表分为10个部分,第1部分=组合[:100000]等。。然后我必须向每个AWS实例发送组合的子集

但我怎样才能做到最好呢?我的想法是拥有一个可供所有实例访问的共享卷,并在该卷上放置calculate.py脚本,我通过SSH调用该脚本:

sshuser@instancepython calcultate.py

或者芹菜可能是更好的方法?或者另一种方式

编辑:我做了一些测试,芹菜似乎是最好的选择。

您可以使用Paths设置ssh隧道,然后使用parallelpython的Paths fork将函数提交给多个服务器,或者只使用Paths的隧道,然后使用其他类似rpyc或zmq的东西通过隧道连接到不同的服务器


请参阅:

对我来说,这似乎是一个用C重写函数并从Python调用该函数的绝佳机会。通常会导致10倍、100倍或1000倍的加速。有时加速是非常小的,虽然,这一切都取决于您的功能的细节。有很多方法可以做到这一点。您也可以尝试PyPy,它可以提供显著的性能优势,而且工作量很小,因为您只需要在不同的Python解释器中使用它即可。@GaryWalker感谢您的回复。这是Pypy不支持的线性回归statsmodels,所以我更愿意继续使用CPython。