盘点 | 2016年年度十大Python库

选自tryolabs
机器之心编译
参与:李亚洲、吴攀、李泽南
圣诞将至,又到了年终盘点时间,tryo labs 和去年一样又推出了一份 2016 年十大 python 库的榜单。对于这份榜单的筛选条件,tryo labs 写道:「我们避开了 django、flask 等已经成为今天的标准库的已经成功的项目。另外,这个榜单中有的库是 2016 年之前建立的,但它们在今年的受欢迎度出现了暴增或我们认为它们非常好所以可以进入这个榜单。」下面是榜单详情:
1. zappa
链接: 查看案例,看起来很棒。
8.blaze
链接:
有时候,当你对数据集运行分析时,却发现数据集过大,无法一次塞进计算机 ram 中。如果你无法依赖 numpy 或 pandas,你通常需要转而使用其他的工具,如 postgresql、mongodb、hadoop、spark 等等。这些工具都有其自身的优缺点,依照任务的特点,总有一种工具是适合你的。但决定转换工具是一项巨大的工程,因为你需要了解这些系统如何工作,以及如何以正确的形式插入数据。
blaze 提供了一个统一的接口,让用户无需学习所有数据库技术。blaze 库的核心是一种计算表达方式。blaze 本身不会进行任何计算:它只是知道如何指定一个特定的后端,决定谁来执行任务。blaze 还有其它很多功能(它形成了一个生态系统),它作为一个库被开发出来。例如,dask 实现了一个可用于 numpy 数组的插件,可以处理大于内存的内容和利用多核处理器,并且还具有动态任务调度能力。
9.arrow
链接:https://github/crsmithdev/arrow
有一个流行的说法,在计算机科学领域只有两个大问题:无效缓存和命名。我认为这句话忽略了另一个大问题:管理数据时间(managing datetimes)。如果你曾经试图在 python 中管理数据时间,你就会知道标准库里有巨量的模块和类型:datetime、date、 calendar、 tzinfo、 timedelta、 relativedelta、 pytz 等等。更糟糕的是,时区都自然设定为默认值。
arrow 为开发者提供了「人类的时间(datetime for humans)」,提供了一种清晰的方法来创建、操作、格式化和转换日期、时间和时间戳。它可以用于替换 python 2 和 3 的 datetime 类型,并提供了一个更友好的界面,同时加入新的功能(如 humanize)弥补了原系统的不足。即使你不需要 arrow 提供的额外功能,使用它也可以大大减少代码中的引用。
10. hug
链接:http://hug.rest/
公开你的内部 api,这样可以大大简化 python api 的开发过程。hug 是一个仅限于 python3 的库,提供在 python 中创建 http rest api 的最简单的方式。它不是一个 web 框架(虽然 hug 提供这样的功能,而且表现很好),它的主要功能是公开正确的标准内部 python api。这个想法非常简单:一次定义逻辑和结构,并且可以通过多种方式公开你的 api。目前,它支持公开 rest api 或命令行界面。
你可以使用类型注释(type annotations),让 hug 不仅为你的 api 生成文件,同时提供验证和明确的错误消息,这可以让你的开发工作(和你的 api 用户的工作)变得轻松很多。hug 构建在 falcon 的高性能 http 库之上,这意味着你可以使用任何 wsgi 兼容的服务器(例如 gunicorn)将其部署到生产环境中。