当前位置: 首页 > 科技观察

2019年Python类库Top10

时间:2023-03-12 13:06:31 科技观察

这是Top10Python类库的第五个年度榜单。在这里,您将发现开源世界中的一些隐藏宝藏,它们将帮助您开始一个新项目或使您现有的项目更有趣。从这个列表中,你既可以找到机器学习库,也可以找到非机器学习库,所以它涉及到方方面面。1.HTTPX如果你是一个经常与api交互的Python死忠粉,你可能对requests类库并不陌生。但是,如果您使用的是在高性能现代应用程序中越来越普遍的异步范例,那么请求对您没有多大帮助。为了解决这个问题,TomChristie和他的合作者为我们带来了HTTPX,这是未来十年的新一代异步HTTP客户端。HTTPX继续使用请求,为您提供标准功能以及HTTP/2和HTTP/1支持。除此之外,还包括其他功能,例如使用ASGI协议直接调用PythonWeb应用程序和完整类型注释。您需要同时发出很多请求吗?那么HTTPX是新的首选。注意:HTTPX仍被视为alpha版本,仅作为异步客户端开发。将来,将重新引入同步客户端。2.StarletteStarlette是一个轻量级的ASGI框架/工具包,具有一系列特性,包括WebSocket和GraphQL支持、进程内后台任务和真正的高性能。除此之外,还有一个100%类型注释的代码库,并且没有依赖项。将其视为Flask的一个非常轻量级的、现代的和异步的版本。您还可以灵活地选择它,并决定是将其作为一个完整的Web框架来使用,还是仅仅作为一个ASGI工具包来使用。它运行在uvicorn等ASGI服务器上,uvicorn在去年也进入了前10名。如果您正在考虑开发一个新的Web应用程序,您绝对应该给Starlette一个大放异彩的机会。3.FastAPIStarlette很棒,但它非常简约且非常开放。这给了你很大的自由度,但有时,你只需要一个框架来正确快速地完成工作。SebastianRamirez的FastAPI就是这样一个框架。它在任何意义上都很快。这个新框架基于OpenAPI标准,用于使用Python的高性能特性和自动交互式文档构建API。它默认支持SwaggerUI和ReDoc,使您能够直接从浏览器调用和测试您的API,从而加快开发时间。使用此框架构建API既快速又简单。该库还利用了现代Python的最佳实践之一:类型提示。FastAPI以多种方式使用类型提示,但最酷的功能之一是由Pydantic提供支持的自动数据验证和转换。FastAPI建立在Starlette之上,其性能可与NodeJS和Go媲美,同时还支持原生WebSocket和GraphQL。最后但同样重要的是,它拥有一些为开源库编写的最好的技术文档。说真的,我强烈建议您检查一下。4.ImmutablesMagicStack工作人员回归,他们使用简单优雅的不可变映射类型(“冻结字典”)。谁能从中受益?其底层数据结构是哈希数组映射树(HAMT),用于函数式编程语言,如Haskell。最有趣的是,它们都为set()和get()操作提供了O(logN)性能,对于相对较小的地图,这实际上是O(1)。如果您的应用程序使用更大的词典,可以使用bumping来提高性能,那么这个很酷的新库可能值得关注。5.PyodidePyodide是一个真正让您大吃一惊的项目。通过使用WebAssembly将Python科学堆栈带到浏览器,它将科学计算提升到一个全新的水平。想用NumPy处理一些数字吗?使用Pandas处理一些更大的数据流?使用NumPy缩放结果?多亏了Pyodide,您现在可以在浏览器中轻松完成所有这些以及更多操作。除此之外,还有更好的消息:它的包目录列出了超过35个当前可用的包。从字面上看,天空是它唯一的极限。6.ModinModin的座右铭是通过更改一行代码来扩展您的Pandas工作流程,真的,就这么简单。只需安装Modin,更改您的导入语句,即可在当今配备多核处理器的笔记本电脑上获得高达4倍的加速。它是怎么做到的?现在揭开秘密。Modin实现了自己的modin.pandas.DataFrame对象,是一个轻量级的并行DataFrame。这个对象的使用是透明的,因为它与Pandas是api兼容的,它在后台运行,它会使用像Ray或Dask这样的计算引擎来分发数据和计算。有时,只需对代码进行一些小的更改就可以带来巨大的速度提升,Modin就是一个很好的例子。7.Streamlit在每一个主要的机器学习项目中,都会有一个点,你最终需要手动与模型和数据进行交互。无需花费数小时和数千行代码来开发应用程序,Streamlit使您能够快速构建应用程序来共享您的模型和分析。现在可以轻而易举地创建与数据和模型输出交互并可视化的UI。Streamlit提供了一种从Python脚本跳转到生产级应用程序的快速方法,只需在代码中添加几行即可。Streamlit适用于各种数据科学相关工具,TensorFlow、Keras、PyTorch、Pandas,应有尽有。8.Transformers如果你正在做任何与机器学习相关的事情,那么你可能听说过过去一年围绕自然语言处理(NLP)的重要发展。已经开发了许多新的高性能模型,例如BERT、XLNet或roBERTa,以显着提高文本分类、机器翻译、命名实体识别等各种NLP任务的技术水平。它对于从业者拥有可以使用这些模型来支持生产应用程序的工具,这些工具使用起来并不复杂。对于研究人员来说,重要的是拥有可以调整内部结构的库,以便可以更轻松地开发和试验新模型,而不会浪费太多时间编写样板代码。HuggingFace的杰出人士为我们带来了transformers,这是一个类库,经过打包、预训练,可以使用最现代的NLP模型进行实施。TensorFlow2.0和PyTorch之间的互操作性帮助该库迅速成为行业标准,为研究和生产应用提供支持。它们的发展也非常快,随着研究人员开发新模型,它们经常被引入图书馆。蛋糕上的樱桃:HuggingFace团队开发了DistilBERT,这是一个更小、更快、更便宜、更轻的纯BERT版本。还在犹豫要不要用HuggingFace/Transformer转现代NLP?然后选择一天而不是一天,今天是你的幸运日,看看他们很棒的在线演示,不要吝啬你的拇指。9.Detectron2Facebook的人工智能研究团队(FAIR)一直在推动计算机视觉(CV)的极限,为对象检测、姿势估计、语义/实例分割以及最近的全景分割和其他任务开发新模型。解决这些问题的可能性在几年前还像是科幻小说。我们期待FAIR的最佳表现,这一次他们成功地再次震撼了人群。Detectron2是备受期待的Detectron续集,它是在PyTorch中从头开始构建的,并包含了最先进的计算机视觉算法。这样的类库特别难以设计,因为它们必须支持不同类型的用例。与HuggingFace的Transformers一样,Fair的团队在以非常灵活和模块化的方式设计Detectron2方面做得很好,使其非常适合CV研究应用。同时,它的使用极其简单,非常适合那些只想在不干扰内部机制的情况下快速获得结果的人。是的,只需几行Python代码,您就可以使用Detectron2让您的软件“理解”图像。时间会证明Detectron2是否成功培养了一个充满活力的社区,到目前为止,一切看起来都很有希望。它很可能成为CV应用程序的“首选”解决方案,在这些应用程序中,研究人员可以创建新的、更快和更好的模型。如果您正在做任何类型的简历工作,一定要留意它!10.Metaflow前有新宝宝,2019年榜单中勉强挤进的新面孔!但专业人士对此并不掉以轻心:尽管它仅在几周前发布,但它已经在Netflix内部进行了测试,并且经过两年的完善才决定将其开源。Metaflow是一个Python库,旨在帮助数据科学家和工程师构建用于现实世界的真实项目。它主要侧重于减轻非技术数据科学家的技术负担,例如计算资源、并行执行、架构设计和版本控制等。Netflix与AWS的合作伙伴关系使您能够轻松定义复杂的数据流,同时提供out-of-the-box支持分布式计算。我们已经在对Tryolabs中的一些关键项目进行Metaflow评估。如果您有兴趣了解有关此工具的更多信息,请查看Netflix的公共博客。总结又一年过去了,它为开源世界留下了一份非凡的遗产,这些遗产将在未来几年保持相关性。您可以查看我们之前的列表:Lookatlibrariesinevolutionin2015,2016,2017,2018。如果我们错过了您最喜欢的Python库,请在下方留言。我们很想听听您的意见。关于作者FabiánTorres是一名全栈开发人员。电气工程学士学位;EliasMasquil,全栈开发人员;AlanDescoins,首席技术官兼合伙人,计算机工程学士学位;GermanHoffman,全栈开发和研究工程师,计算机工程学士学位。