首页 存档 技术 查看内容

2016年十大Python库

2018-3-30 13:00 |来自: 互联网 336 0

摘要: Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。 去年,我们回顾了什么是2015年最好的Python库,而这篇文章在Python社区被广泛分享(查看r/Python上的贴子)。一年过去了,是时候对开源社区在今 ...


Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

去年,我们回顾了什么是2015年最好的Python库,而这篇文章在Python社区被广泛分享(查看r/Python上的贴子)。一年过去了,是时候对开源社区在今年做的很棒的工作予以评价。

同样,我们避开Django,Flask等已经成为某种标准的库。此外,其中一些库在2016年之前建立,但是今年它们的人气激增或者我们认为它们足以进入这个榜单。下面是榜单详情:

1. Zappa

自AWS Lambda(以及后 续的其它项目)发布以来,无服务器架构风行一时。这些架构允许将微服务部署到云端,一个完全托管的环境中,该环境中人们不必管理任何服务器,而只需分配无状态的、临时的计算容器即可,这个环境完全由供应商管理。有了这个能力,事件(例如流量尖峰)可以触发更多这种容器的执行,因此给出处理“无限”水平缩放的可能性。

Zappa是用于Python的无服务器框架,尽管(至少目前)它仅支持AWS Lambda 和AWS API Gateway。它使得建立so-architectured应用程序非常简单,将你从使用AWS Console或API必须做的大多数繁琐的设置中解脱出来,并且它还有各种用于简化部署和管理不同环境的命令。

2. Sanic uvloop

谁说Python不可以快?除了可能是软件库最好的名字,Sanic也可能是最快的Python网络框架,并且似乎以绝对优势获胜。它是一个类Flask的专为速度而设计的Python 3.5 网络服务器。另一个库uvloop是asyncio的一个超快速替代,它在底层使用libuv。同时,这两个库作了很好的结合!

根据Sanic作者的基准,uvloop能驱动Sanic处理超过3.3万个请求/秒,这简直是不可思议(比node.js快)。你的代码可以受益于新的async/await语法,并且它看起来也很整洁;此外,我们喜欢Flask风格的API。如果你正使用asyncio,一定要试试Sanic,你的代码只需很小变化就能从uvloop受益。

3. asyncpg

根据asyncio 框架的最新进展,来自MagicStack的人员为我们带来高效异步(目前仅CPython 3.5)的专为PostgreSQL设计的数据库接口库。它没有依赖项,这意味着不需要安装libpq 。和与数据库服务器交换数据使用文本格式的psycopg2(Python采用的最流行的PostgreSQL适配器)相反,asyncpg 实现了PostgreSQL二进制I/O协议,这让它不仅允许支持通用类型,也带来众多的性能优势。

该基准很清楚:asyncpg平均至少比psycopg2(或aiopg)快3倍,并且快于node.js 和Go实现。

4. boto3

如果你的基础架构在AWS上或以其它方式使用它们的服务(如S3),那么你应该很高兴AWS API的Python接口boto,从头开始完全重写了。 好消息是,你不需要立即迁移你的应用程序:可以同时使用boto3 和boto (2) ;如boto3仅使用在应用程序新的部分。

这个新实现在不同的服务之间更一致的多,并且因为它使用数据驱动的方法在运行时从JSON描述文件中生成类,所以,它总是得到快速更新。不再落后于新的亚马逊API功能,赶紧使用boto3吧!

5. TensorFlow

我们这里还需要介绍吗?自2015年11月Google发布以来,该库已经获得巨大的势头,并且已经成为最流行的GitHub Python repository。如果去年你与世隔绝,TensorFlow是一个使用数据流图进行数值计算的库,它可以运行在GPU或CPU上。

我们目睹了TensorFlow在机器学习社区(尤其是深度学习,查看帖子机器学习研讨会(MLconf)上的10点思考)成为一种趋势,它不仅在研究中而且在生产中也得到了广泛的应用。如果你正在做深度学习,并想通过一个更高层次的接口使用TensorFlow,你可以尝试使用它作为Keras(去年的帖子)或更新的TensorFlow-Slim的后端。

6. gym universe

如果你涉猎AI,肯定听说过OpenAI非营利人工智能研究公司(由Elon Musk等人支持。)。今年研究人员已经开源了一些Python代码!Gym是一个工具包,用于开发和对比强化学习算法。它包括一个开源库,该开源库含有可用于测试强化学习算法的测试问题(环境)集合,一个站点和一个允许对比训练算法(代理)性能的API。

因为它不关心代理的实现,你可以用你选择的计算库来构建它们:numpy、TensorFlow、Theano等。

我们还有最近发布的universe,这是一个通过游戏、网站和其它应用程序研究综合智力的平台。这与gym非常符合,因为它允许任何现实世界的应用程序变成一个gym 环境。研究人员希望这种无限可能性能加快对成为更聪明的能解决通用任务代理的研究。

7. Bokeh

你可能熟悉Python为数据可视化提供的一些库;其中最流行的是matplotlib和seaborn。但是,Bokeh是为交互式可视化创建的,并且瞄准展示现代网络浏览器。这意味着Bokeh可以创建一个通过网络浏览器让你浏览数据的绘图。好处是,它紧密结合Jupyter Notebooks,因此你可以使用它与你可能的首选工具进行你的研究。它也有一个可选的服务器组件bokeh-server,其带有许多强大的功能,如在服务器端对大数据集的采样(再也不需要龟速的网络传输/浏览器了!)、流数据、变换等。

务必检查gallery来看看你可以创建的示例。他们看起来真棒!

8. Blaze

有时,你想对数据集进行分析,数据集太大不适合你的计算机RAM。如果不能依靠numpy或Pandas,你通常会转向其它工具如PostgreSQL、MongoDB、Hadoop、Spark和许多其它的。视使用情况而定,这些工具各有优点与缺点,总有一个或多个适合你。问题?这里有一个很大的开销,因为你需要了解这些系统是如何工作的以及如何以适当的形式插入数据。

Blaze提供一个统一的接口,这让你远离几种数据库技术。该库的核心是提供了一种表达计算的方式。Blaze自身实际上不进行任何计算:它只知道如何指定将负责执行它的特定的后端。Blaze(生态系统)还要很多其它功能,它作为库被开发出来。例如,Dask实现NumP数组的简单替代,可以处理比内存大的内容和充分利用多核,而且也自带动态任务调度。有点儿意思。

9. arrow

有一个流行的说法,计算机科学只有两个难题:缓存失效和事物命名。我想这句话显然缺少了一件事:管理时间。如果你曾经试图在Python中这样做,你会知道标准库中有无数的模块和类型: datetimedatecalendartzinfotimedelta

relativedeltapytz等。更糟的是,时区都自然设定为默认值。

Arrow是“人类的datetime”,提供了一种明智的方法来创建、操纵、格式化和转换日期、时间和时间戳。它替换datetime类型,支持Python 2和3,并且提供了一个更好的接口还填补了新功能的空白(如humanize)。即使你不需要arrow,利用它可以大大减少你代码中的模板。

10. hug

公开你的内部API,这大大简化Python API的开发。Hug是一个新一代Python 3(仅仅)库,它向你提供在Python中创建HTTP REST APIs最简洁的方式。它本身不是一个网络框架(尽管它是一个执行的非常好的函数),但只专注于公开正确习惯和标准的内部Python APIs。

这种想法很简单:一次定义逻辑和结果,并且你可以通过多种途径公开你的API。目前,它支持公开REST API和命令行接口。

你可以使用注释类型,这让hug不仅为你的API生成文档并且也提供验证和清除错误消息,这使你的开发(和你的API使用者的)更轻松。Hug建立于Falcon的高性能HTTP库之上,这意味着你可以使用任何兼容wsgi的服务器如gunicorn部署它到生产中。


英文原文:http://www.pybloggers.com/top-10-python-libraries-of-2016/
译者:毛茸茸的向日葵


本文转载于微信公众号: Python程序员(pythonbuluo),更多微信文章请扫描关注公众号:

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部