Py学习  »  Python

Python 潮流周刊#20:三种基准测试的方法、为什么代码在函数中运行得更快?

Python猫 • 8 月前 • 166 次点击  

△点击上方“Python猫”关注 ,回复“1”领取电子书

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。标题取自其中两则分享,不代表全部内容都是该主题,特此声明。

本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。

本周刊开通 Telegram 频道后,已有 650+ 小伙伴加入,欢迎你到来:https://t.me/pythontrendingweekly

🦄文章&教程

1、三种对 Python 作基准测试的方法[1]

文章介绍了使用标准库对 Python 作基准测试的几种方法:time、timeit、cProfile 与 profile,详细介绍了几个工具的使用方法及测试数据的解读。

2、舍弃 Poetry 和 PDM,切换成 Hatch[2]

作者“移情别恋”了 Hatch,开始在项目中使用它。文章介绍了他喜欢 Hatch 的一些小亮点:环境隔离、命令脚本、可替代 Tox、可选的依赖项等。(附:Python 任务自动化工具 tox 教程[3]

3、TOML 文件格式有什么问题?[4]

TOML 是“改进的” INI 文件,是 Python 推荐的配置文件格式。文章提到,连 TOML 的作者也认为它是一种糟糕的格式!文章指出了它的问题:非常冗长、层次结构很难仅从语法推断、像 YAML 一样过于复杂、具有语法类型。

4、用 Python 玩转遗传算法[5]

遗传算法(Genetic Algorithm)是一种受生物进化理论启发的优化算法,用于解决复杂的搜索和优化问题。文章用 Python 演示了这种算法的使用例子。

5、现代 Python 的类型提示:Protocal 类[6]

Protocol 类是 Python 3.8 版本中引入的,用于指定一个类应该实现哪些方法,与 Java 的 Interface 相似。在保持 Python 动态类型用法的情况,使用 Protocal 可以获得部分静态类型检查的效果。

6、tornado 的协程调度原理[7]

Tornado 是一个高性能的 Web 框架,文章解读它的源码,主要想搞清楚:yield 暂存的状态到哪去了、重新恢复执行的“合适的时机”到底是什么、具体是怎么恢复执行的?

7、可视化 CPython 发布过程[8]

文章基于 PEP-101 梳理了 CPython 的发布过程,绘制出了详细的流程图并给出关键步骤的解释。

CPython构建与发布流程

8、如何用 PyObjC 与 Apple Vision 框架作文本识别[9]

Apple 的 Vision 框架提供了一系列预训练的模型和 API,可快速在应用中添加图像分析和计算机视觉功能。PyObjC 可实现 Python 与 Objective-C 的交互。文章将它们结合,开发了一个文本处理项目。

9、调试 Python 中正则表达式的灾难性回溯[10]

作者使用 py-spy 定位一个 CPU 100% 占用问题,找出了罪魁祸首的正则表达式,进而探讨灾难性回溯及其解决方法,并给出了优化性能的建议写法。

10、使用 Django 和 HTMX 开发一个数据库搜索项目[11]

一篇详细的 Django 项目教程,实现一个全栈的项目。文中有作者的教程视频。

11、异步 SqlAlchemy 和多数据库管理[12]

利用 asyncio 和 SqlAlchemy 库,文章探讨了如何有效地连接和管理多个数据库,获得可扩展且具有弹性的架构。文章介绍了两种实现方法。

12、Python Fire:自动生成命令行接口[13]

Fire 是谷歌开源的一个用于生成 CLI 的库,Github 25K star。这篇文章介绍了它的一般命令、组合命令、链式命令、复杂命令等用法。

13、我最爱的解 LeetCode 问题的 Python 技巧[14]

文章介绍了 Python 中的一些小技巧,从初级到高级,多数与数据结构相关,在解 LeetCode 问题时很有用。

14、为什么 Python 代码在函数中运行得更快?[15]

Python 代码分别在函数和全局模块中运行,哪个更快呢?为什么是在函数中更快呢?Python 代码执行的工作原理是什么?如何测试与优化 Python 函数的性能?

🎁Python潮流周刊🎁已免费发布了 20 期,访问下方链接,即可查看全部内容:https://pythoncat.top/tags/weekly[16]

如果你觉得周刊有价值,请表达小小心意,赞赏一下猫哥吧~~

🐿️项目&资源

1、hatch:时髦的可扩展的 Python 项目管理库[17]

一个 Python 项目管理工具,有标准化构建系统、强大的环境管理、轻松发布到 PyPI、版本管理、响应式 CLI、比 pipenv 和 poetry 同类工具快约 2-3 倍。(star 4.4K)

2、keep:开源的告警管理和自动化执行平台[18]

可以将所有告警整合到一个管理平台中,并编排工作流以自动化执行端到端的流程。支持对接多种数据采集平台、数据库、办公软件等,可视化编排告警处理工作流。(star 2.2K)

3、PyPI Data 网站:查看 PyPI 的各项数据[19]

一个神奇的网站!包含 PyPI 的各类统计数据、曲线图和饼图,例如文件总数、总大小、一些功能特性的流行趋势等等。

PyPI数据统计

4、strictyaml:类型安全的 YAML 解析和校验库[20]

用于解析 YAML 的受限子集,拒绝解析丑陋的、难以阅读和不安全的 YAML 特性,有严格的标记验证和直接的类型转换,可替代 pyyaml、ruamel.yaml 和 poyo,有清晰可读的异常信息。(star 1.3K)

5、facefusion:更先进的换脸工具[21]

最新开源的一个人像换脸库,star 涨得飞快!(star 6.9K)

6、pyflyby:一套 Python 的生产力工具[22]

包含一系列的小工具,功能包含用于命令行的 py、用于 IPython 的自动导入、添加缺失的 import、删除不用的 import、格式化 import、打印一组文件的 import、重命名导入,等等。

7、instagraph:将文本内容或 URL 转换为可视化的知识图谱[23]

可以提取复杂信息中的实体,生成它们的关系图谱。使用了 GPT-3.5,以及 Flask 来生成色彩友好的图例;响应式设计,可在任何设备上使用。

8、textual-web:在浏览器中运行 TUI 和终端[24]

Textual 开发的 app 发布到网页上,也可以在浏览器中使用命令行终端。是个很有意思的项目。

9、ziggy-pydust:用 Zig 语言构建 Python 扩展[25]

一个开发框架,可打包用 Zig 编写的 Python 扩展模块,还包含一个 Pytest 插件可发现与运行 Zig 测试。集成了 Poetry,方便构建 wheel 和发布。支持缓冲区协议,可以实现零拷贝提升 Numpy 计算。

10、MFTCoder:多任务微调代码大模型[26]

一个开源的多任务代码大语言模型项目,包含代码大模型的模型、数据、训练等。在 HumanEval Benchmarks 的 Python Pass@1 取得了 74.4% 的开源 SOTA 成绩,超过 GPT-4。

🐱赞助&支持

如果你喜欢周刊,请分享给其他需要的同学,让更多人可以从中受益~

如果你觉得周刊有价值,请随意赞赏[27]买杯咖啡[28] 进行支持!

如果你想帮助周刊办得更好,欢迎向我们投稿或提出建议:投稿/建议通道[29]

如果你是品牌方或广告主,欢迎私信我,洽谈赞助与合作事项。

🐼欢迎订阅

  • 微信公众号[30]:除更新周刊外,还发布其它原创作品,并转载一些优质文章。(可加好友,可加读者交流群)
  • 博客[31]RSS[32]:我的独立博客,上面有历年原创/翻译的技术文章,以及从 2009 年以来的一些随笔。
  • Github[33]:你可以获取本周刊的 Markdown 源文件,做任何想做的事!
  • 邮件[34]:在 Substack 上开通的频道,满足你通过邮件阅读时事通讯的诉求。
  • Telegram[35]:除了发布周刊的通知外,我将它视为一个“副刊”,补充发布更加丰富的资讯。
  • Twitter[36]:我的关注列表里有大量 Python 相关的开发者与组织的账号。

参考资料

[1]

三种对 Python 作基准测试的方法: https://superfastpython.com/benchmark-python-code/

[2]

舍弃 Poetry 和 PDM,切换成 Hatch: https://andrich.me/2023/08/switching-to-hatch/

[3]

Python 任务自动化工具 tox 教程: https://pythoncat.top/posts/2020-01-06-tox

[4]

TOML 文件格式有什么问题?: https://hitchdev.com/strictyaml/why-not/toml/

[5]

用 Python 玩转遗传算法: https://joseprupi.github.io/misc/2023/08/19/playing_with_genetic_algorithms_in_python.html

[6]

现代 Python 的类型提示:Protocal 类: https://codebeez.nl/blogs/type-hinting-in-modern-python-the-protocol-class/

[7]

tornado 的协程调度原理: https://dev.to/caipi/tornado-de-xie-cheng-diao-du-yuan-li-2h34

[8]

可视化 CPython 发布过程: https://sethmlarson.dev/security-developer-in-residence-weekly-report-9

[9]

如何用 PyObjC 与 Apple Vision 框架作文本识别: https://yasoob.me/posts/how-to-use-vision-framework-via-pyobjc/

[10]

调试 Python 中正则表达式的灾难性回溯: https://krishnanchandra.com/posts/regex-catastrophic-backtracking/

[11]

使用 Django 和 HTMX 开发一个数据库搜索项目: https://www.photondesigner.com/articles/database-search-django-htmx

[12]

异步 SqlAlchemy 和多数据库管理: https://python-bloggers.com/2023/09/asynchronous-sqlalchemy-and-multiple-databases/

[13]

Python Fire:自动生成命令行接口: https://juejin.cn/post/7278246015193464847

[14]

我最爱的解 LeetCode 问题的 Python 技巧: https://www.jjinux.com/2022/08/python-my-favorite-python-tricks-for.html

[15]

为什么 Python 代码在函数中运行得更快?: https://stackabuse.com/why-does-python-code-run-faster-in-a-function/

[16]

https://pythoncat.top/tags/weekly: https://pythoncat.top/tags/weekly

[17]

hatch:时髦的可扩展的 Python 项目管理库: https://github.com/pypa/hatch

[18]

keep:开源的告警管理和自动化执行平台: https://github.com/keephq/keep

[19]

PyPI Data 网站:查看 PyPI 的各项数据: https://py-code.org/stats

[20]

strictyaml:类型安全的 YAML 解析和校验库: https://github.com/crdoconnor/strictyaml

[21]

facefusion:更先进的换脸工具: https://github.com/facefusion/facefusion

[22]

pyflyby:一套 Python 的生产力工具: https://github.com/deshaw/pyflyby

[23]

instagraph:将文本内容或 URL 转换为可视化的知识图谱: https://github.com/yoheinakajima/instagraph

[24]

textual-web:在浏览器中运行 TUI 和终端: https://github.com/Textualize/textual-web

[25]

ziggy-pydust:用 Zig 语言构建 Python 扩展: https://github.com/fulcrum-so/ziggy-pydust

[26]

MFTCoder:多任务微调代码大模型: https://github.com/codefuse-ai/MFTCoder

[27]

赞赏: https://img.pythoncat.top/wechat_code.png

[28]

买杯咖啡: https://www.buymeacoffee.com/pythoncat

[29]

投稿/建议通道: https://github.com/chinesehuazhou/python-weekly/issues/new

[30]

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

[31]

博客: https://pythoncat.top

[32]

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

[33]

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

[34]

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

[35]

Telegram: https://t.me/pythontrendingweekly

[36]

Twitter: https://twitter.com/chinesehuazhou

如果你觉得本文有帮助
请慷慨分享点赞,感谢啦

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/161803
 
166 次点击