分布式Python编程(distributed python programming)

2019-09-22 02:01发布

我想一个python程序的执行分为两个不同的机器。 我想知道如果有一种方法来调用一台机器上Python解释器从另一个。 另一台计算机上运行一个脚本,但执行的任务而分裂,两台机器。

在接下来的几个月的过程中,我会教我的自我分布式编程,而且我认为这将是一个良好的开端。

我认为第一步是用一台机器调用另一台机器并把它一块的程序。 然后,下一个步骤将是两台机器一起执行相同程序和通信,以避免出现问题。 第三步是三台机器,等等。

意见,建议,和思想都欢迎...

Answer 1:

Disclamer:我铲的开发商。

基于数据的技术,你可能想要得到与分布式处理将是MPI标准的认识(多台计算机,使用mpi4py [首选]或pympi)和标准多模块允许远程计算(但尴尬的,从我的角度来看)。

您应该基于任务的框架开始,虽然。 他们提供了一个简单的和用户友好的使用情况。 这两个是一个最焦点,同时创造瓢 。 你可以试试pip -U scoop 。 在Windows中,您不妨先使用安装PyZMQ 他们的可执行安装程序 。 您可以检查所提供的范例,并与各种参数玩明白是什么原因导致性能下降或容易增加。 我鼓励你把它如比较其替代芹菜类似的工作。

这两个框架让Python程序的远程启动。 更重要的是,它的并行处理你,而你只需要你的任务来养活他们。

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



Answer 2:

有MPI版本用于Python [1] [2] 。

MPI (消息传递接口)是一种标准化的接口,并因为你会发现它也是在C,Java的,(Fortran语言)等,这是很酷

它使您能够将流程,运行远程之间通信。 您可以使用这些信息用于同步和信息传递。

你也有集体行动,如broadcastgatherreduce



Answer 3:

看看RPyC ,你可能会发现它有用。



Answer 4:

退房雷 ,这是编写并行和分布式的Python库。

射线使用相同的语法到单个多核机器上并且在所述分布式设置并行代码。

如果添加了@ray.remote装饰的功能,它可以异步并行(集群中的任何机器上)执行。 远程函数调用返回期货,其值可以被检索ray.get

同样的事情可以用Python类(而不是函数)来完成,看到对演员的文档 。

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)

见雷文档为多。 请注意,我的雷开发商之一。



文章来源: distributed python programming