Python 潮流周刊#29:Rust 会比 Python 慢?!

△请给“Python猫”加星标 ,以免错过文章推送

0ece37a98730bbeecfef368167e4b9f3.jpeg

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿[1]。另有电报频道[2]作为副刊,补充发布更加丰富的资讯。

🐱产品推荐

FlowUs 息流是新一代知识管理与协作平台,支持云文档、多维表、文件夹、团队空间,提供 100+ 模板,可用于管理笔记、安排计划、文档协作、制作个人主页等。猫哥邀请你一起用 FlowUs 提升个人生产力:

d7448ca2732a23e31a09c5b835fc9512.png

🦄文章&教程

1、Rust std fs 比 Python 慢!真的吗!?

一篇长文,由一个诡异的问题开始:Rust 写的程序竟然比 Python 慢?!作者在定位根因的过程中,多次得到 Rust 方案比 Python 慢的结果,甚至 C 版本代码也比 Python 的慢!层层深入,用上各种定位手段,最后发现竟然是 AMD CPU 内核的问题!

2、Python 中性能最快的时间戳函数是哪个?[3]

Python 中有哪些获取时间戳的函数?它们的性能表现如何?文章取了 7 种函数进行性能测算,发现 time.time() 是最快的。文章发布后引起了一些争议,于是作者写了第二篇,做了 Win10、WSL2 和 Ubuntu20 的对比,也增加了 Python 3.10 和 3.12 的对比。(附:第二篇性能对比的文章[4]

74d319a01d0129d7d764a7adb5040c38.png
调用50万次所需的时间

3、Python 是 Easy,Go 是 Simple,但 Simple != Easy[5]

Python 简单易用门槛低,因为它把很多复杂的工作交给了解释器,这使得它适合用作原型设计,快速开发应用。Go 语言也简单,但相比 Python 的规则要多一些,性能也更高。作者的建议是同时发挥两者的优势。

4、使用 Numba 提升 pandas.DataFrame.apply 的 C 级别性能[6]

在 Pandas 2.2.0 中,DataFrame.apply 可以指定一个新的 numba 引擎,实现并行化的操作。文章介绍了这个引擎的工作原理、它支持的应用场景及无法做到的事,同时给出了多项性能测试的数据。

5、一份杂乱的 Flask 维护任务清单[7]

作者是 Flask 的维护者之一,列出了一份任务清单,提供给 Flask 的贡献者们方便着手处理。我们多数人没有维护开源项目的经验,或许无法想象项目维护者们要做那一大堆与编码完全无关的事。(题外话:Flask 的 star 数在本周已落后于 FastAPI,失去了 Web 框架第二高 star 的位置)

6、用子解释器运行 Python 并行程序[8]

Python 3.12 开放了子解释器的一个 API,它有什么用呢?子解释器与多线程、多进程有什么区别,它们的性能差距有多少?将子解释器用于 Web 开发,会有什么效果?作者用开发中的 Python 3.13 做了一些实验,结果有惊喜也有程序异常。期待明年真正无-GIL 的 Python 吧!

feacb8c93702e3838904db4416a4fcb5.png
工作负载和执行时间的增长率

7、新的开源库 VS. 旧的开源库 [9]

文章选取了 10 组在 Python 社区很知名的库,同时给出它们相对应的替代库,这里最没争议的估计是 Ruff 替代 Pylint,其它则还有:Taipy/Streamlit、Polars/Pandas、Dask/PySpark、PyTorch/TensorFlow ……

8、在 Pandas 的世界中使用 Polars[10]

Polars 是速度更快、内存效率更高、更易于使用的数据处理库,可作为 Pandas 的替换。但是替换后如何与第三方库更好地集成呢?文章介绍了几种处理方法,实现从 Pandas 到 Polars 的无缝切换。

9、Python 的软关键字有哪些?[11]

软关键字(soft keyword)指的是可以被重新赋值的关键字。作者想利用正则表达式从 Python 最新的语法文件中找出所有的软关键字。最后得知只需下面两行代码就能做到(以下是 Python 3.12 的结果,即现在有 4 个软关键字):

>>> import keyword
>>> keyword.softkwlist
['_', 'case', 'match', 'type']

10、用 Python 实现机器人爸爸[12]

为了应对小孩的提问,作者开发了一个“机器人爸爸”。用到了 Eleven Labs 作声音克隆,用 Picovoice 语音转文字提取唤醒词,最后调用 ChatGPT 接口获取答案。

11、如何(以及如何不)设计 REST API[13]

文章列出了十多项 REST API 的最佳实践规则,解释了规则的含义及实现,另外,作者嘲笑了几家公司被广泛使用的 API,将它们作为规则的反例。

12、如何调试 Asyncio 程序?[14]

文章介绍了几种调试 Asyncio 代码的方法,包括启用它的调试日志、在调试模式下运行事件循环、自定义调试信息等。(附:文章的姊妹篇 如何分析 Asyncio 程序?[15] 分析慢程序和高频函数)

🐿️项目&资源

1、marker:高效将 PDF/EPUB/MOBI 转换为 Markdown[16]

支持将多种文件格式转换为 markdown,可删除页眉/页脚,将方程式转换为 latex,格式化处理代码块和表格,另外也支持多种语言。(star 2.3K)(附:将整本 PDF 版《Think Python》转换后的效果[17]

bc21919fc4172cf60b317c71a1450a5b.png
与Nougat在速度和准确性的对比

2、awesome-django-performance:精选资源,用于分析和优化 Django 项目[18]

这个项目整理了一些库、工具、文章和书籍,主要集中在 profile、数据库、缓存、序列化、任务处理和监测等方面。

3、datamodel-code-generator:将 JSON/YAML 转换为 Pydantic 模型[19]

一个数据模型代码生成器,支持多种输入类型(OpenAPI、JSON、YAML、CSV、Python 字典、GraphQL),输出 Pydantic、dataclass、TypeDict 等类型。(star 2K)

4、fastapi-code-generator:用 openapi 文件创建 FastAPI 程序[20]

它利用 datamodel-code-generator 生成 pydantic 模型,基于 OpenAPI 格式的接口文件,快速生成 FastAPI 项目。支持自定义模板,允许将自定义变量传给自定义模板。

5、kanban-python:终端中的看板应用程序[21]

在命令行窗口中实现的看板应用工具,有漂亮的表格、配置与数据分离、可自动创建任务、可作任务跟踪。

7f33a2d3679bf6d82f487271d10a9205.png
看板应用的示例

6、saq:简单的异步队列[22]

一个基于 Asyncio 和 Redis 之上的简单且高性能的任务队列框架。提供有一个简单的 UI,可查看任务队列、状态及执行详情等信息。

7、pyqtgraph:用于科学/工程应用的数据可视化及 GUI 工具[23]

一个高性能的绘图工具库,利用 Numpy 作数值运算、用 Qt 的 GraphicsView 框架作 2D 显示和 OpenGL 作 3D 显示。(star 3.5K)

8、toga:Python 原生、OS 原生的 GUI 工具包[24]

一个用于创建跨平台桌面应用的 GUI 工具,支持 MacOS、Windows、Linux (GTK)、Android、iOS 和单页 Web 应用。(star 3.9K)

9、autometrics-py:函数级的指标监测工具[25]

它提供了一个装饰器,可检测函数的请求率、错误率和延迟等指标,方便你识别和调试程序的问题。支持用 Prometheus 查询与分析、开箱即用的 Grafana 仪表板、自定义告警、运行开销小。

45137eacb032ed72f112f1ce015d55c2.png

10、compiled:Python 标准库的编译后的变体[26]

Python 中有些标准库是用纯 Python 实现的,可能会成为性能瓶颈。这个项目将经过 mypyc 类型检查的标准库编译成 C 代码版本,比原始版本快 2-4 倍。目前已完成 tomllib 和 difflib,计划中还有 asyncio、urllib、zipfile、argparse 和 uuid。

11、transpyler-gpt:GPT 驱动的 Python 转译器,让代码在旧版本上运行[27]

它借助 GPT 将高版本 Python 代码转译成目标环境的 Python 版本代码,实现向下兼容执行。例如将 Python 3.10+ 的 match-case 代码转译成 if-else 代码,可在更低 Python 版本中执行。

12、clone-voice: 一个带 web 界面的声音克隆工具[28]

支持中文、英文、日语、韩语 4 种语言,可在线从麦克风录制声音。支持文字转语音和语音变声。(star 1.3K)

975e70fabde1f1091a0e5e3b02de0fcb.png
语音克隆演示

🐢播客&视频

1、Talk Python To Me #439:Pixi 一个高性能的包管理器[29]

Pixi 是用 Rust 开发的基于 Conda 的包管理器。

2、Mouse Vs Python #23:与 Charlie Marsh 聊 Ruff Formatter[30]

Ruff 是一个用 Rust 编写的 Python linter+formatter,而且两方面都是性能最快的。

🥂讨论&问题

1、你用 Python 做过最酷的事情是什么?[31]

Reddit 上的热门讨论帖,也有近 700 条评论,需要刷很久才能看完。。。

2、鼓励使用命名参数的语法糖[32]

函数的命名参数提高了可读性,但也可能使代码重复和冗长。作者提出了一个简化变量写法的语法糖,得到了不少核心开发者的支持。

🐼欢迎订阅

  • 微信公众号[33]:除更新周刊外,还发布其它原创作品,并转载一些优质文章。(可加好友,可加读者交流群)

  • 博客[34] 及 RSS[35]:我的独立博客,上面有历年原创/翻译的技术文章,以及从 2009 年以来的一些随笔。

  • Github[36]:你可以获取本周刊的 Markdown 源文件,做任何想做的事!

  • 邮件[37]:在 Substack 上开通的频道,满足你通过邮件阅读时事通讯的诉求。

  • Telegram[38]:除了发布周刊的通知外,我将它视为一个“副刊”,补充发布更加丰富的资讯。

  • Twitter[39]:我的关注列表里有大量 Python 相关的开发者与组织的账号。

参考资料

[1]

投稿: https://github.com/chinesehuazhou/python-weekly

[2]

电报频道: https://t.me/pythontrendingweekly

[3]

Python 中性能最快的时间戳函数是哪个?: https://www.dataroc.ca/blog/most-performant-timestamp-functions-python

[4]

第二篇性能对比的文章: https://www.dataroc.ca/blog/most-performant-timestamp-functions-python-2

[5]

Python 是 Easy,Go 是 Simple,但 Simple != Easy: https://preslav.me/2023/11/27/python-is-easy-golang-is-simple-simple-is-not-easy/

[6]

使用 Numba 提升 pandas.DataFrame.apply 的 C 级别性能: https://labs.quansight.org/blog/unlocking-c-level-performance-in-df-apply

[7]

一份杂乱的 Flask 维护任务清单: https://davidism.com/maintainer-notes/

[8]

用子解释器运行 Python 并行程序: https://tonybaloney.github.io/posts/sub-interpreter-web-workers.html

[9]

新的开源库 VS. 旧的开源库 : https://dev.to/taipy/new-open-source-vs-old-open-source-33k7

[10]

在 Pandas 的世界中使用 Polars: https://pythonspeed.com/articles/polars-pandas-interopability/

[11]

Python 的软关键字有哪些?: https://mathspp.com/blog/til/pythons-soft-keywords

[12]

用 Python 实现机器人爸爸: https://blog.untrod.com/2023/11/robot-dad.html

[13]

如何(以及如何不)设计 REST API: https://github.com/stickfigure/blog/wiki/How-to-(and-how-not-to)-design-REST-APIs

[14]

如何调试 Asyncio 程序?: https://superfastpython.com/debug-asyncio/

[15]

如何分析 Asyncio 程序?: https://superfastpython.com/profile-asyncio-programs/

[16]

marker:高效将 PDF/EPUB/MOBI 转换为 Markdown: https://github.com/VikParuchuri/marker

[17]

转换后的效果: https://github.com/VikParuchuri/marker/blob/master/data/examples/marker/thinkpython.md

[18]

awesome-django-performance:精选资源,用于分析和优化 Django 项目: https://github.com/st3v3nmw/awesome-django-performance

[19]

datamodel-code-generator:将 JSON/YAML 转换为 Pydantic 模型: https://github.com/koxudaxi/datamodel-code-generator

[20]

fastapi-code-generator:用 openapi 文件创建 FastAPI 程序: https://github.com/koxudaxi/fastapi-code-generator

[21]

kanban-python:终端中的看板应用程序: https://github.com/Zaloog/kanban-python

[22]

saq:简单的异步队列: https://github.com/tobymao/saq

[23]

pyqtgraph:用于科学/工程应用的数据可视化及 GUI 工具: https://github.com/pyqtgraph/pyqtgraph

[24]

toga:Python 原生、OS 原生的 GUI 工具包: https://github.com/beeware/toga

[25]

autometrics-py:函数级的指标监测工具: https://github.com/autometrics-dev/autometrics-py

[26]

compiled:Python 标准库的编译后的变体: https://github.com/pycompiled/compiled

[27]

transpyler-gpt:GPT 驱动的 Python 转译器,让代码在旧版本上运行: https://github.com/frostming/transpyler-gpt

[28]

clone-voice: 一个带 web 界面的声音克隆工具: https://github.com/jianchang512/clone-voice

[29]

Talk Python To Me #439:Pixi 一个高性能的包管理器: https://talkpython.fm/episodes/show/439/pixi-a-fast-package-manager

[30]

Mouse Vs Python #23:与 Charlie Marsh 聊 Ruff Formatter: https://www.blog.pythonlibrary.org/2023/11/27/episode-23-the-ruff-formatter-with-charlie-marsh/

[31]

你用 Python 做过最酷的事情是什么?: https://www.reddit.com/r/Python/comments/17upt2f/whats_the_coolest_things_youve_done_with_python/

[32]

鼓励使用命名参数的语法糖: https://discuss.python.org/t/syntactic-sugar-to-encourage-use-of-named-arguments/36217

[33]

微信公众号: https://img.pythoncat.top/python_cat.jpg

[34]

博客: https://pythoncat.top

[35]

RSS: https://pythoncat.top/rss.xml

[36]

Github: https://github.com/chinesehuazhou/python-weekly

[37]

邮件: https://pythoncat.substack.com

[38]

Telegram: https://t.me/pythontrendingweekly

[39]

Twitter: https://twitter.com/chinesehuazhou

12b46465b1b30e905305782fe35c0830.gif

如果你觉得本文有帮助

请慷慨分享点赞,感谢啦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/215906.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云原生之深入解析Kubernetes策略引擎对比:OPA/Gatekeeper与Kyverno

一、前言 ① Kubernetes 策略 Kubernetes 的 Pod Security Policy,正如其名字所暗示的,仅是针对 Pod 工作的,是一种用来验证和控制 Pod 及其属性的机制。另外 PSP 只能屏蔽非法 Pod 的创建,无法执行任何补救/纠正措施。而 Gatek…

ApachePOI入门案例——读取Excel文件的内容

依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version> </dependency> <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml…

一、Zookeeper基本知识

目录 1、ZooKeeper概述 2、ZooKeeper特性 3、ZooKeeper集群角色 ​​​​​​​1、ZooKeeper概述 Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。 ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录…

【华为OD题库-049】评论转换输出-java

题目 在一个博客网站上&#xff0c;每篇博客都有评论。每一条评论都是一个非空英文字母字符串。评论具有树状结构&#xff0c;除了根评论外&#xff0c;每个评论都有一个父评论。 当评论保存时&#xff0c;使用以下格式: 首先是评论的内容; 然后是回复当前评论的数量。 最后是当…

05、pytest断言确定的异常

官方用例 # content of test_sysexit.py import pytestdef f():raise SystemExit(1)def test_mytest():with pytest.raises(SystemExit):f()解读与实操 ​ 标准python raise函数可产生异常。pytest.raises可以断言某个异常会发现。异常发生了&#xff0c;用例执行成功&#x…

华为云云绘本第一期:童话奇迹原来是你

点此进入官网&#xff0c;专家1对1&#xff1a;应用身份管理服务OneAccess_华为云IDaaS-华为云

Python:核心知识点整理大全2-笔记

在本章中&#xff0c;你将学习可在Python程序中使用的各种数据&#xff0c;还将学 习如何将数据存储到变量中&#xff0c;以及如何在程序中使用这些变量。 2.1 运行 hello_world.py 时发生的情况 运行hello_world.py时&#xff0c;Python都做了些什么呢&#xff1f;下面来深入…

ArcGIS提取DEM中的山脉范围

已知数据&#xff1a;DEM文件ASTGTM_N00E118E.img 使用软件&#xff1a;ArcMap 要求&#xff1a;对数据进行操作&#xff0c;提取数据文件中的山脉范围 下面开始操作&#xff1a; 1、 打开ArcMap将DEM文件ASTGTM_N00E118E.img添加到数据框。 2、 接下来我们打开spatial ana…

三十七、XA模式

目录 一、XA模式原理 在XA模式中&#xff0c;一个事务通常被分为两个阶段&#xff1a; 二、Seata的XA模式 RM一阶段的工作&#xff1a; TC一阶段的工作&#xff1a; RM二阶段的工作&#xff1a; 1、优点&#xff1a; 2、缺点&#xff1a; 三、实现XA模式 1、修改yml文…

CYCA少儿形体礼仪 朝阳市培训成果考核圆满落幕

少年成长从形体教育开始——从2020年美育中考落地执行开始&#xff0c;美育成为少儿教育发展的必经之路&#xff0c;助力少儿综合能力全面发展。CYCA中国文化管理协会青少年文化艺术委员会全面贯彻党的教育方针&#xff0c;促进儿童素质艺术教育并深入实施&#xff0c;从少儿形…

12-2 Mybatis-Plus与Spring整合

user-springboot programming 实体类 ## 链接数据源 C3p0&#xff08;原始化&#xff09; 连接池的数据源 引入mysql 自动配置类DataSource会生效 需要你去配置相关的数据库参数 需要用到连接池 数据源的配置类 SpringBoot的测试类 SpringBootTest 原先是RunWith和Conf…

服务异步通讯

四、服务异步通讯 4.1初始MQ 4.1.1同步通讯和异步通讯 同步调用的优点: 时效性较强,可以立即得到结果 同步调用的问题: 耦合度高 性能和吞吐能力下降 有额外的资源消耗 有级联失败问题 异步通信的优点: 耦合度低 吞吐量提升 故障隔离 流量削峰 异步通信的缺点: …

智能优化算法应用:基于入侵杂草算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于入侵杂草算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于入侵杂草算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.入侵杂草算法4.实验参数设定5.算法结果6.参考…

双指针算法: 快乐数 与 盛水最多的容器

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 前言 声明…

前端漏洞--front(系统有user1/user1,admin1/admin1两个用户)

任务一&#xff1a;挖掘反射型XSS漏洞&#xff08;以弹窗test13&#xff09;证明 任务二&#xff1a;复现环境中的CSRF漏洞&#xff0c;设计表单&#xff0c;当管理员点击URL后自动将自己密码重置为&#xff1a;123456 任务三&#xff1a;复现环境中的JSON Hijacking漏洞&#…

开放式耳机怎么选?干货分享! 2023好评度超高开放式耳机推荐!

在现代社会中&#xff0c;人们对于音乐和通话的需求越来越高。传统的耳机虽然能够提供良好的音质&#xff0c;但使用过程中存在一些问题&#xff0c;例如长时间佩戴会引起耳朵疲劳和隔绝周围环境的声音。为了解决这些问题&#xff0c;开放式耳机应运而生&#xff0c;成为了一种…

解决webpack打包生成gz格式css/js文件没法在nginx使用的问题--全网唯一正确

本文绝对是全网解决这个问题唯一正确的文章&#xff0c;没有之一&#xff01; 很多人都说开启nginx gzip压缩&#xff0c;这些人完全是胡说八道&#xff01;你们到底懂不懂叫gzip压缩啊&#xff1f;&#xff01; 不信你就试试&#xff0c;如果css/js只有gz文件&#xff0c;ng…

数组逆序重放

数组逆序重放的意思是将数组的元素逆序排列&#xff0c;然后重新放回原数组中。这个操作可以在很多编程语言中实现&#xff0c;例如Python、Java等。 下面是一个Python的示例代码&#xff0c;可以实现这个操作&#xff1a; def reverse_and_rearrange(arr): # 反转数组 …

面试多线程八股文十问十答第二期

面试多线程八股文十问十答第二期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1.进程和线程的区别 概念不同&#xff1a;进程是操作系统中的一个独立执行单元&a…

Python搭建代理IP池实现接口设置与整体调度

目录 前言 1. 搭建免费代理IP爬虫 2. 将获取到的代理IP存储到数据库中 3. 构建一个代理IP池 4. 实现调度器来调度代理IP池 5. 实现带有代理IP池的爬虫 总结 前言 在网络爬虫中&#xff0c;代理IP池是一个非常重要的组件。由于许多网站对单个IP的请求有限制&#xff0c;…