分布式python编程

分布式python编程,python,distributed,Python,Distributed,我试图将python程序的执行拆分为两台不同的机器。我想知道是否有一种方法可以从一台机器上调用另一台机器上的python解释器。不在另一台机器上运行脚本,而是将执行任务拆分为两台机器 在接下来的几个月里,我将教授我自己的分布式编程,我认为这将是一个很好的开始 我认为第一步是使用一台机器调用另一台机器,并向它发送程序的一部分。然后下一步是两台机器一起执行相同的程序,并进行通信以避免出现问题。第三步是三台机器,等等 建议、提示和想法都是受欢迎的…Python有MPI版本 (消息传递接口)是一个标准化

我试图将python程序的执行拆分为两台不同的机器。我想知道是否有一种方法可以从一台机器上调用另一台机器上的python解释器。不在另一台机器上运行脚本,而是将执行任务拆分为两台机器

在接下来的几个月里,我将教授我自己的分布式编程,我认为这将是一个很好的开始

我认为第一步是使用一台机器调用另一台机器,并向它发送程序的一部分。然后下一步是两台机器一起执行相同的程序,并进行通信以避免出现问题。第三步是三台机器,等等


建议、提示和想法都是受欢迎的…

Python有MPI版本

(消息传递接口)是一个标准化的接口,它很酷,因为在C、Java、(Fortran)等语言中也可以找到它

它使您能够在远程运行的进程之间进行通信。您可以使用这些消息进行同步和信息传递


您还可以使用集体操作,例如
广播
收集
减少
,看看,您可能会发现它很有用。

Disclamer:我是SCOOP的开发者

对于分布式处理,您可能希望熟悉的基于数据的技术将是MPI标准(对于多台计算机,使用mpi4py[preferred]或pympi)和允许远程计算的标准多处理模块(但在我看来,这很尴尬)

不过,您应该从基于任务的框架开始。它们提供了一个简单且用户友好的用法。这两个都是创作过程中最大的关注点。你可以用
pip-U勺子试试。在Windows上,您可能希望首先使用安装PyZMQ。您可以查看提供的示例并使用各种参数,以轻松了解导致性能下降或提高的原因。我鼓励您将其与类似工作的备选方案进行比较

这两种框架都允许远程启动Python程序。更重要的是,它为您执行并行处理,而您只需要为它们提供任务

您可能需要检查一种简单的方法来设置远程环境,甚至远程控制或启动脚本。

check out,这是一个用于编写并行和分布式Python的库

Ray使用相同的语法在单个多核计算机和分布式设置中并行化代码

如果将
@ray.remote
装饰器添加到函数中,则它可以异步并行执行(在群集中的任何计算机上)。远程函数调用返回未来,可以使用
ray.get
检索其值

Python类(而不是函数)也可以做同样的事情,请参见


有关更多信息,请参阅。请注意,我是Ray开发人员之一。

您可能需要查看中列出的资源。它认为,除其他外,做你想要的。很好的链接。我想pp()是我要找的。事实上,pp就是我要写的,所以看看他们的代码会让我受益匪浅,我想谢谢。我喜欢你先介绍标准。我非常熟悉pip和fabric,但是fabric允许我在其他主机上运行远程shell命令(包括运行py脚本),这超出了我想要做的。看来我应该看看pp;一个任务分发库,然后开始编写我自己的库以供练习。
import ray
import time

ray.init()

@ray.remote
def function(x):
    time.sleep(1)
    return x

args = [1, 2, 3, 4]

# Submit 4 tasks in parallel.
result_ids = [function.remote(x) for x in args]

# Retrieve the results. Assuming at least 4 cores,
# this will take 1 second.
results = ray.get(result_ids)