Python高性能分布式执行框架-Ray

Python011

Python高性能分布式执行框架-Ray,第1张

这是别人说的,咱也不敢说,咱也不敢问 ! 了解大致的逻辑就好.你只需要知道他超级牛逼,超级方便

安装就是简单的 pip install ray , 需要提醒的就是ray现在只有linux编译版本, windows就别想着用了,为了这,我硬生生把开发环境从windows切到了linux.

首先来看一下最简单的Ray程序是如何编写的。

在Ray里,通过Python注解@ray.remote定义remote函数。使用此注解声明的函数都会自带一个默认的方法remote,通过此方法发起的函数调用都是以提交分布式任务的方式异步执行的,函数的返回值是一个对象id,使用ray.get内置操作可以同步获取该id对应的对象

参考:

高性能分布式执行框架——Ray

取代 Python 多进程!伯克利开源分布式框架 Ray

官方文档

基于python的高性能实时并行机器学习框架之Ray介绍

从GitHub中整理出的15个最受欢迎的Python开源框架。这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等。\x0d\x0a\x0d\x0aDjango: Python Web应用开发框架\x0d\x0aDjango 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。\x0d\x0a\x0d\x0aDiesel:基于Greenlet的事件I/O框架\x0d\x0aDiesel提供一个整洁的API来编写网络客户端和服务器。支持TCP和UDP。\x0d\x0a\x0d\x0aFlask:一个用Python编写的轻量级Web应用框架\x0d\x0aFlask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 \x0d\x0a模板引擎。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数\x0d\x0a据库、窗体验证工具。\x0d\x0a\x0d\x0aCubes:轻量级Python OLAP框架\x0d\x0aCubes是一个轻量级Python框架,包含OLAP、多维数据分析和浏览聚合数据(aggregated data)等工具。\x0d\x0a\x0d\x0aKartograph.py:创造矢量地图的轻量级Python框架\x0d\x0aKartograph是一个Python库,用来为ESRI生成SVG地图。Kartograph.py目前仍处于beta阶段,你可以在virtualenv环境下来测试。\x0d\x0a\x0d\x0aPulsar:Python的事件驱动并发框架\x0d\x0aPulsar是一个事件驱动的并发框架,有了pulsar,你可以写出在不同进程或线程中运行一个或多个活动的异步服务器。\x0d\x0a\x0d\x0aWeb2py:全栈式Web框架\x0d\x0aWeb2py是一个为Python语言提供的全功能Web应用框架,旨在敏捷快速的开发Web应用,具有快速、安全以及可移植的数据库驱动的应用,兼容Google App Engine。\x0d\x0a\x0d\x0aFalcon:构建云API和网络应用后端的高性能Python框架\x0d\x0aFalcon是一个构建云API的高性能Python框架,它鼓励使用REST架构风格,尽可能以最少的力气做最多的事情。\x0d\x0a\x0d\x0aDpark:Python版的Spark\x0d\x0aDPark是Spark的Python克隆,是一个Python实现的分布式计算框架,可以非常方便地实现大规模数据处理和迭代计算。DPark由豆瓣实现,目前豆瓣内部的绝大多数数据分析都使用DPark完成,正日趋完善。\x0d\x0a\x0d\x0aBuildbot:基于Python的持续集成测试框架\x0d\x0aBuildbot是一个开源框架,可以自动化软件构建、测试和发布等过程。每当代码有改变,服务器要求不同平台上的客户端立即进行代码构建和测试,收集并报告不同平台的构建和测试结果。\x0d\x0a\x0d\x0aZerorpc:基于ZeroMQ的高性能分布式RPC框架\x0d\x0aZerorpc是一个基于ZeroMQ和MessagePack开发的远程过程调用协议(RPC)实现。和 Zerorpc 一起使用的 Service API 被称为 zeroservice。Zerorpc 可以通过编程或命令行方式调用。\x0d\x0a\x0d\x0aBottle: 微型Python Web框架\x0d\x0aBottle是一个简单高效的遵循WSGI的微型python Web框架。说微型,是因为它只有一个文件,除Python标准库外,它不依赖于任何第三方模块。\x0d\x0a\x0d\x0aTornado:异步非阻塞IO的Python Web框架\x0d\x0aTornado的全称是Torado Web Server,从名字上看就可知道它可以用作Web服务器,但同时它也是一个Python Web的开发框架。最初是在FriendFeed公司的网站上使用,FaceBook收购了之后便开源了出来。\x0d\x0a\x0d\x0awebpy: 轻量级的Python Web框架\x0d\x0awebpy的设计理念力求精简(Keep it simple and powerful),源码很简短,只提供一个框架所必须的东西,不依赖大量的第三方模块,它没有URL路由、没有模板也没有数据库的访问。\x0d\x0a\x0d\x0aScrapy:Python的爬虫框架\x0d\x0aScrapy是一个使用Python编写的,轻量级的,简单轻巧,并且使用起来非常的方便。

Python作为一种功能强大的编程语言,因其简单易学而受到很多开发者的青睐。那么,Python 的应用领域有哪些呢?概括起来,Python的应用领域主要有如下几个,这也是学完python将要从事的相关工作。

1、Web应用开发:

Python经常被用于 Web 开发。例如,通过 mod_wsgi 模块,Apache 可以运行用 Python 编写的 Web 程序。Python 定义了 WSGI 标准应用接口来协调 HTTP 服务器与基于 Python 的 Web 程序之间的通信。

不仅如此,一些 Web 框架(如 Django、TurboGears、web2py 等等)可以让程序员轻松地开发和管理复杂的Web程序。

举个最直观的例子,全球最大的搜索引擎 Google,在其网络搜索系统中就广泛使用 Python 语言。另外,我们经常访问的集电影、读书、音乐于一体的豆瓣网,也是使用 Python 实现的。

2、操作系统管理、自动化运维开发

很多操作系统中,Python 是标准的系统组件,大多数 Linux 发行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在终端下直接运行 Python。

有一些 Linux 发行版的安装器使用 Python 语言编写,例如 Ubuntu 的 Ubiquity 安装器、Red Hat Linux 和 Fedora 的 Anaconda 安装器等等。

另外,Python 标准库中包含了多个可用来调用操作系统功能的库。例如,通过 pywin32 这个软件包,我们能访问 Windows 的 COM 服务以及其他 Windows API;使用 IronPython,我们能够直接调用 .Net Framework。

通常情况下,Python 编写的系统管理脚本,无论是可读性,还是性能、代码重用度以及扩展性方面,都优于普通的 shell 脚本。

3、游戏开发

很多游戏使用 C++ 编写图形显示等高性能模块,而使用 Python 或 Lua 编写游戏的逻辑。和 Python 相比,Lua 的功能更简单,体积更小;而 Python 则支持更多的特性和数据类型。

比如说,国际上指明的游戏 Sid Meier's Civilization,就是使用 Python 实现的。

4、编写服务器软件

Python 对于各种网络协议的支持很完善,所以经常被用于编写服务器软件以及网络爬虫。

比如说,Python 的第三方库 Twisted,它支持异步网络编程和多数标准的网络协议(包含客户端和服务器端),并且提供了多种工具,因此被广泛用于编写高性能的服务器软件。

5、科学计算

NumPy、SciPy、Matplotlib 可以让 Python 程序员编写科学计算程序。

以上都只是 Python 应用领域的冰山一角,总的来说,Python 语言不仅可以应用到网络编程、游戏开发等领域,还可以在图形图像处理、只能机器人、爬取数据、自动化运维等多方面展露头角,为开发者提供简约、优雅的编程体验。

其实python的相关工作远不止这些,生活中的各行各业都有python的身影,所以,学Python,是明智的选择!