美文网首页
python编程开发关于程序扩展操作

python编程开发关于程序扩展操作

作者: d390347c4084 | 来源:发表于2019-02-22 11:44 被阅读1次

来源:infoq

随着互联网的不断发展,我们对python编程开发技术的学习和掌握程度也在不断的提高。下面我们就通过案例分析来了解和学习一下,关于程序扩展都有哪些操作方法。

必要的概念

传统编程依赖于两个核心概念:函数和类。使用这些构建块就可以构建出无数的应用程序。

但是,当我们将应用程序迁移到分布式环境时,这些概念通常会发生变化。

一方面,OpenMPI、Python多进程和ZeroMQ等工具提供了用于发送和接收消息的低级原语。这些工具非常强大,但它们提供了不同的抽象,因此要使用它们就必须从头开始重写单线程应用程序。

另一方面,我们也有一些特定领域的工具,例如用于模型训练的TensorFlow、用于数据处理且支持SQL的Spark,以及用于流式处理的Flink。这些工具提供了更高级别的抽象,如神经网络、数据集和流。但是,因为它们与用于串行编程的抽象不同,所以要使用它们也必须从头开始重写应用程序。

image

用于分布式计算的工具

Ray占据了一个独特的中间地带。它并没有引入新的概念,而是采用了函数和类的概念,并将它们转换为分布式的任务和actor。Ray可以在不做出重大修改的情况下对串行应用程序进行并行化。

开始使用Ray

ray.init()命令将启动所有相关的Ray进程。在切换到集群时,这是需要更改的行(我们需要传入集群地址)。这些过程包括:

有很多worker进程并行执行Python函数(大概是每个CPU核心对应一个worker)。

用于将“任务”分配给worker(以及其他计算机)的调度程序进程。任务是Ray调度的工作单元,对应于一个函数调用或方法调用。

共享内存对象存储库,用于在worker之间有效地共享对象(无需创建副本)。

内存数据库,用于存储在发生机器故障时重新运行任务所需的元数据。

Rayworker是独立的进程,而不是线程,因为在Python中存在全局解释器锁,所以对多线程的支持非常有限。

并行任务

要将Python函数f转换为一个“远程函数”(可以远程和异步执行的函数),可以使用@ray.remote装饰器来声明这个函数。然后函数调用f.remote()将立即返回一个future(future是对终输出的引用),实际的函数执行将在后台进行(我们将这个函数执行称为任务)。

有效地对值进行聚合

我们可以以更复杂的方式使用任务依赖。例如,假设我们希望将8个值聚合在一起。在我们的示例中,我们将进行整数加法,但在很多应用程序中,跨多台计算机聚合大型向量可能会造成性能瓶颈。在这个时候,只要修改一行代码就可以将聚合的运行时间从线性降为对数级别,即聚合值的数量。

从类到actor

在不使用类的情况下开发有趣的应用程序很具挑战性,在分布式环境中也是如此。

你可以使用@ray.remote装饰器声明一个Python类。在实例化类时,Ray会创建一个新的“actor”,这是一个运行在集群中并持有类对象副本的进程。对这个actor的方法调用转变为在actor进程上运行的任务,并且可以访问和改变actor的状态。通过这种方式,可以在多个任务之间共享可变状态,这是远程函数无法做到的。

【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。

相关文章

  • python编程开发关于程序扩展操作

    来源:infoq 随着互联网的不断发展,我们对python编程开发技术的学习和掌握程度也在不断的提高。下面我们就通...

  • pycharm配置

    什么是环境? (计)适合某种操作的计算机软件和程序 适合python语言进行软件编程开发的计算机软件平台 操作系统...

  • Python第一课

    学习重点:Python概述、计算机常识、编程语言、搭建Python开发环境、Python程序的编辑和执行、Pyth...

  • Python游戏编程快速上手

    《Python游戏编程快速上手第4版》Python是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计...

  • java数据库管理之jdbc

    JDBC的开发步骤 注入攻击(不用这个代码编程序) (用这个代码编程序) 更新操作 JDBC的工具类(代码固定) ...

  • python第一站

    python 基础 (markdown语法) 起步篇 01.关于编程 1.什么是编程 : 编程就是把人工的操作命令...

  • 编程论剑,Python 开发环境哪个最强?

    Python被戏称为胶水语言,贯穿了小到桌面程序开发、网页开发,大到企业级管理开发。Python已成为编程界的宠儿...

  • 开发环境

    什么是环境? (计算机)适合某种操作的计算机软件和程序。 适合python语言进行软件编程开发的计算机软件平台,操...

  • 2018-07-10 PYTHON第二天

    第一:关于编程 编程:编程就是编写程序,通过程序自动化的操作,编写程序,解决现实生活中的问题 解决生活中的问题。 ...

  • 2018-07-10

    pythonDAYS02 (1)关于编程 理解什么是编程:编程就是编写程序,通过程序自动化的操作,解决现实生活中的...

网友评论

      本文标题:python编程开发关于程序扩展操作

      本文链接:https://www.haomeiwen.com/subject/tynsyqtx.html