2016年十大最热门的Python库

作者: JerryHouse 分类: python, web, 数据分析 发布时间: 2016-12-23 22:04 ė 62016年十大最热门的Python库已关闭评论

去年,我们回顾了我们认为是2015年最好的Python库,这在Python社区中广泛分享。一年过去了,现在是时候给予应有的评价,今年开源社区做了很棒的工作。再次,我们试图避免大多数已建立的选择,如Django,Flask等,这些是现在的标准选择。此外,这些库中的一些在2016年之前就存在了,但他们在今年的人气激增,或者我们认为他们是足够大,值得拥有。

1.Zappa
自从发布AWS Lambda(和其他已经遵循的)以来,无服务器架构开始变得流行。无服务器架构允许微服务部署在云中,人们关心的不是管理任何服务器,而是有服务提供商分配的无状态的,短暂的计算容器。在这种架构下,事件(例如流量尖峰)可以触发更多这些容器的执行,因此给出处理“无限”水平缩放的可能性。
Zappa是Python的无服务器框架,尽管(至少目前)它只支持AWS Lambda和AWS API Gateway。它使构建无服务器架构的应用程序变得非常简单,从而使您免于通过AWS控制台或API完成的大多数繁琐的设置,并拥有各种命令来简化部署和管理不同的环境。
2.Sanic uvloop
谁说Python不能快? Sanic是有史以来最快的Python web框架之一,它是一个类似Flask的Python 3.5+ Web服务器,专为速度而设计。 另一个库uvloop,是一个超快速插件,可以替换asyncio的事件循环,底层使用的是libuv。 这两个库结合在一起,产生了巨大的作用。
根据Sanic作者的基准,uvloop可以处理超过33k的请求/ s,这相当疯狂,甚至比node.js更快。 您的代码可以受益于新的async / await语法,因此它看起来也很整洁; 除此之外,我们喜欢Flask风格的API。 确保给Sanic一个尝试,如果你使用asyncio,你一定能从uvloop受益,你的代码很少变化!
3.asyncpg
根据asyncio框架的最新发展,MagicStack的人员为我们提供了专门为PostgreSQL设计的高效异步(目前仅CPython 3.5)数据库接口库。 它没有其它的第三方依赖,意味着没有必要安装libpq,与psycopg2(用于Python的最流行的PostgreSQL适配器)以文本格式与数据库服务器交换数据,asyncpg实现PostgreSQL二进制I / O协议,这不仅允许支持通用类型,而且具有许多性能优势。
基准数据表明asyncpg至少比psycopg2(或aiopg)快3倍,并且比node.js和Go实现更快。
4.boto3
如果你的基础设施在AWS上或者使用他们的服务(如S3),你应该非常高兴使用boto库,从头开始完全重写。 伟大的事情是,你不需要一次迁移你的应用程序:你可以在同一时间使用boto3和boto(2); 例如只在您的应用程序的新部分使用boto3。新的实现在不同的服务之间更加一致,并且由于它使用数据驱动的方法在运行时从JSON描述文件生成类,它将总是得到快速更新。 没有更多的滞后于新的亚马逊API功能,移动到boto3!
5.TensorFlow
我们还需要在这里介绍它吗? 自从2015年11月Google发布以来,这个python深度学习库已经获得了巨大的发展势头,已经成为最流行的GitHub Python机器学习库。 TensorFlow是一个使用数据流图的机器学习库,可以在GPU或CPU上运行。我们很快就看到它成为机器学习社区的一个趋势(特别是深度学习,见我们在MLconf的10个主要内容中的文章),不仅在研究中使用它,而且在生产应用中被广泛使用。 如果你正在做深度学习,并希望通过更高级别的界面使用它,你可以尝试使用它作为后端为Keras(这使它在过去几年)或更新的TensorFlow Slim。
6.gym+universe
如果你在AI领域工作,你肯定听说过由Elon Musk等人支持创建的非营利人工智能研究公司OpenAI。研究人员今年开源了一些Python代码-Gym, Gym是一个用于开发和比较增强学习算法的工具包。它包含一个开放源代码库,其中包含可用于测试强化学习算法的测试问题(环境)集合,以及允许比较经过训练的算法(代理)的性能的站点和API。由于它不关心底层的实现,你可以使用你选择的计算库来构建它们:numpy,TensorFlow,Theano等。
我们也有最近发布的universe,一个用于研究游戏和人工智能的软件平台。它与gym可以完美搭配,因为它允许任何真实世界的应用程序变成gym。研究人员希望,这种无限的可能性将加速研究更聪明的代理,可以解决通用任务。
7. Bokeh
你可能熟悉Python为数据可视化提供的一些库; 其中最受欢迎的是matplotlib和seaborn。 但是Bokeh是为交互式可视化而创建的,并且针对演示文稿的现代网络浏览器,这意味着Bokeh可以创建一个绘图,让您从网络浏览器中探索数据,更妙的是它与Jupyter结合的相当紧密。 还有一个可选的服务器组件,Bokeh服务器,它具有许多强大的功能,如服务器端下采样大数据集(没有更慢的网络传输/浏览器!),流数据,转换等。
8. Blaze
有时您希望对数据集运行分析,以满足计算机的RAM要求。如果你不能依赖numpy或Pandas,你通常转向其他工具,如PostgreSQL,MongoDB,Hadoop,Spark或许多其他工具。根据以往的经验,这些工具每个都有自己的优点和缺点。
Blaze提供了一个统一的接口,可以分离这些技术的底层实现,并提供了一种表达计算的方式。 Blaze本身并没有做任何计算:它只知道如何指示一个特定的后端来负责执行它。Dask实现了NumPy数组的插入替换,可以处理大于内存和利用多个内核的内容,并且还具有动态任务调度。
9.arrow
有一个着名的说法,在计算机科学只有两个难题:缓存失效和命名。 我认为这句话显然没有考虑到另外一件事:时间处理。 如果你曾经试图在Python中这样做,你会知道标准库有一个gazillion模块和类型:datetime,日期,日历,tzinfo,timedelta,relativedelta,pytz等。
arrow是“人性化的日期时间”,提供了一种更可读的方法来创建,操作,格式化和转换日期,时间和时间戳。 它是支持Python 2或3的datetime类型的替代,并提供了一个更好的界面,以及用新的功能(如humanize)填补空白。 这是一个防止抄袭的小标记
10. hug
hug可以让您在外部公开您的内部API,大大简化Python API开发。 Hug是下一代的Python 3库,它将为您提供以最简洁的方式在Python中创建HTTP REST API。它不是一个Web框架本身(虽然这是一个非常好的功能),但只专注于外部暴露习语正确和标准的内部Python API。这个想法很简单:一次定义逻辑和结构,并且可以通过多种方式公开您的API。目前,它支持公开REST API或命令行界面。
您可以使用类型注释,让拥抱不仅为您的API生成文档,而且提供验证和干净的错误消息,这将使您的生活(和您的API用户)更容易。 Hug基于Falcon的高性能HTTP库,这意味着您可以使用任何wsgi兼容的服务器(例如gunicorn)将其部署到生产环境。
本文为这篇文章的翻译。

本文出自 dcharm,转载时请注明出处及相应链接。

本文永久链接: http://www.dcharm.com/?p=626

Ɣ回顶部