Python 潮流周刊#15:如何分析异步任务的性能?

news2024/11/25 0:44:56

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

0292fe8c4395103cffb3b610e34c8811.jpeg

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

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

🦄文章&教程

如何分析 FastAPI 异步请求的性能?[1]

cProfile 这种基于函数调用的分析工具无法有效分析异步操作的执行时间,文章介绍了 pyinstrument[2] 这个分析库,结合 FastAPI.middleware 装饰器,并使用 speedscope[3] 来可视化 FastAPI 程序的耗时情况。

5454fff3ebc083dc3e391f0d7fb9e121.png
FastAPI程序耗时分析

利用 FastAPI 的后台任务:增强性能和响应能力[4]

介绍了 FastAPI 的 BackgroundTasks,可以创建后台任务,用于管理长时间运行的任务,而不阻塞主进程。

使用 Python 创建直方图[5]

直方图又名“柱状图”,可直观查看数据的分布趋势、离散程度和异常值等信息。文中介绍了 Matplotlib、Plotly、Seaborn、Numpy 和 Pandas 等工具绘制直方图的方法,介绍各种直方图的样式和风格、处理异常值、分析时间序列数据等。

Mypy 1.5 发布了[6]

Mypy 是 Python 的静态类型检查工具,1.5 版本主要功能有:不再支持 Python 3.7、更灵活的 TypedDict 创建和更新、可显示错误代码的文档链接、实验性改进了泛型函数的类型推断、对 Python 3.12 的部分支持,等等。

在 Linux 上运行 Python 的“Hello World”脚本时,会发生什么?[7]

在 py 文件中写上一句print("hello world"),然后在命令行执行这个文件,幕后都发生了什么呢?文章使用了 readelfstraceldddebugfs/procltraceddstat 等工具,详细解释了脚本被执行的过程。主要涉及操作系统相关的内容,而不是 CPython 解释器。(附:文章还引用了最近很火的 [Putting the "You" in CPU ](https://cpu.land/ "Putting the "You" in CPU ") ,介绍计算机是如何运行程序的,强烈推荐!)

通过对比 Python 来学习 PostScript[8]

PostScript 是电子出版和桌面出版领域的页面描述语言,广泛用于打印机、出版和图形设备。文章将一段 PostScript 程序直译成 Python 代码,可以让你快速了解这门语言的语法。

Python 中不那么随意的性能优化[9]

作者的一段代码,用 Rust 花了 950 毫秒,而 Python 却花 70 秒!这怎么能忍!将生成器写法改成 for 循环后,只是轻微提速,使用 Numpy 和多进程做了一些优化后,终于看到了比较可观的数据。不同代码方案的对比、Python 底层工作原理、内存使用效率问题,以及语言特性的差异。

在 Python 中创建上下文管理器[10]

如何用 Python 创建自己的上下文管理器?上下文管理器是可以在 with 代码块中使用的对象,在进入和退出时做一些操作。文章介绍了上下文管理器的实现细节。

一个简单的模块,可以篡改 Python 解释器的数字[11]

一篇有意思的文章。导入一个模块后,可以将 8 和 9 互换,即print(8) 会打印出 9。文章展示了如何用 C 编写一个简单的模块,介绍了 CPython 中整数对象池的实现,并通过修改两个整数的引用,实现一个简单的篡改数字的效果。

为什么说 Python 很糟糕……[12]

一篇给 Python 泼冷水的文章,主要观点是认为 Python 不适合于开发大型应用。批评的点包括动态和鸭子类型、性能问题、代码维护和重构难等问题。

Python 中错误处理的最佳实践[13]

Python 之禅说“错误不应该悄无声息地被忽略”,强调了应该直面错误和透明处理。文章指出了一些糟糕的错误处理写法,给出了尽早检查错误、快速失败处理等编程建议。

使用企业数据和 Python 构建 GPT 对话机器人[14]

这篇教程介绍了搭建企业中 GPT 对话机器人的完整流程,包括数据索引、查询检索、集成 LLM、使用 FastAPI 开发接口、uvicorn 作部署。

Python 鸡尾酒:将上下文管理器和迭代器等量混合[15]

tenacity 库提供了一种用迭代器和上下文管理器组合的写法,实现重试机制。这篇文章演示了如何用自定义的迭代器和上下文管理器,来实现同样的功能,可以让你更深入理解这两个好用的特性。

索引的力量:利用 Pandas 提高数据整理效率[16]

Pandas 被广泛用于数据处理,文章介绍了如何高效利用索引技术,提升它整理数据的速度和效率。介绍了多种索引技术,例如基于整数的索引、布尔索引、设置新索引并重置旧索引、排序索引。

杀死 ProcessPoolExecutor[17]

Python 不适合处理 CPU 密集型任务,文章中项目原本使用进程池来规避 GIL 问题,后使用线程、C++ 扩展和更精细调整的 GIL 控制,将内存使用量减少 50%,CPU 使用量减少约 20%,线程和进程减少约 70%,I/O 流量减少 100%。

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

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

8986b2e924dfd2448052cfb57e19a7ce.png

🐿️项目&资源

pyinstrument:Python 的调用堆栈分析器[18]

一个轻量级、无侵入的 Python 代码性能分析库,支持分析异步任务和事件循环代码,可生成多种格式的分析报告,包括文本、HTML 和火焰图。(star 5.5K)

viztracer:低开销的日志记录/调试/分析工具,可视化 Python 代码的执行[19]

国人开源的日志记录/调试/分析工具,支持线程、多进程、子进程和异步,支持火焰图、远程连接、虚拟调试等,有强大的前端,可流畅渲染 GB 级堆栈信息。(star 3.5K)

26abc825fccab1e907589c66bf8daa7d.png
可视化界面

tenacity:Python 重试库[20]

可提供简单而灵活的方式来实现可靠的重试机制,支持指定重试次数、重试间隔时间、重试的回调函数、根据不同的错误条件进行重试等功能,减少手动处理错误和异常的麻烦。(star 5.1K)

litestar:轻量、灵活且可扩展的 ASGI API 框架[21]

一个高性能的 ASGI API 框架,其早期版本是基于 Starlette[22] 开发的,命名为 Starlite,但从 2.0 版本起已完全移除 Starlette 依赖,并改名为 litestar。核心特性:基于类的控制器、依赖注入、分层中间件、插件系统、OpenAPI 3.1、内置 Trio,等等。(star 2.5K)

Make-It-3D:利用单个图像创建高保真 3D 模型[23]

从图片中分割物体,创建高保真的 3D 几何形状,可作 360° 旋转展示。(star 1.2K)

Color-diffusion:对黑白图像进行着色的扩散模型[24]

使用 diffusion  模型对黑白图像进行着色,使用 LAB 色彩空间实现,这是 RGB 色彩空间的 3 通道替代方案。

DevOpsGPT:AI 驱动的自动化软件开发系统[25]

将 LLM 与 DevOps 工具相结合,将自然语言需求转换为可工作的软件。无需繁琐的需求文档编写与沟通,缩短开发与交付时间,加速软件部署和迭代。(star 1.2K)

4e4affaa5595ec6fffb1cfb30085ee6b.png
自动化需求开发的流程图

ILibCST:Python 的具体语法树解析器和序列化器库[26]

具体语法树(Concrete Syntax Tree)是在词法分析和语法分析阶段后生成的一种数据结构,可用于分析代码结构,执行语义分析、重构优化和代码生成等操作。(star 1.2K)

hypothesis:功能强大、灵活且易于使用的库,用于基于属性的测试[27]

基于属性的测试(Property-based Testing)是一种软件测试方法,其中测试用例的生成和验证是基于定义的属性或规约。传统的单元测试要给定具体的测试用例,而基于属性的测试则是随机生成大量的测试数据。(star 6.8K)

🐢播客&视频

Python People 播客[28]

这是一档新上线一个月的播客栏目,每周访谈 Python 社区里一位有突出贡献的大佬。目前已访谈的嘉宾有 Michael Kennedy(Talk Python to Me 和 Python Bytes 的主理人)、Paul Everitt( JetBrains 和 PyCharm 的开发者倡导者)、Brett Cannon(Python 核心开发者)、Barry Warsaw(Python 核心开发者,非常早的成员)、Bob Belderbos(Pybites 的主理人)。

16906f51d1276a5a2d000ff88143e544.png

Talk Python To Me #426:PyScript 的新增功能[29]

Pyscript 使 Python 能够在浏览器中运行。这期播客聊了它的最新进展。

Stack Overflow Blog #597:了解 SRE[30]

网站可靠性工程(Site Reliability Engineering,SRE)是什么?它和 DevOps 有什么关系?如何平衡 SRE 的原则与组织结构的关系?生成式 AI 对 SRE 会带来什么影响?

Stack Overflow Blog #593:Python 团队如何调整语言以适应 AI 的未来[31]

播客嘉宾是 Python 核心开发者和指导委员会成员 Pablo Galindo Salgado,讨论了如何平衡语言设计中的一致性和新功能、为什么收集社区对新版本的反馈很重要,以及为何他要专注于让 Python 更快。

🐱赞助&支持

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

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

🐼欢迎订阅

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

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

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

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

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

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

参考资料

[1]

如何分析 FastAPI 异步请求的性能?: https://blog.balthazar-rouberol.com/how-to-profile-a-fastapi-asynchronous-request

[2]

pyinstrument: https://github.com/joerick/pyinstrument

[3]

speedscope: https://github.com/jlfwong/speedscope

[4]

利用 FastAPI 的后台任务:增强性能和响应能力: https://noplacelikelocalhost.medium.com/leveraging-background-tasks-in-fastapi-enhancing-performance-and-responsiveness-6e4ad64c7d16

[5]

使用 Python 创建直方图: https://compucademy.net/creating-histograms-with-python/

[6]

Mypy 1.5 发布了: https://mypy-lang.blogspot.com/2023/08/mypy-15-released.html

[7]

在 Linux 上运行 Python 的“Hello World”脚本时,会发生什么?: https://jvns.ca/blog/2023/08/03/behind--hello-world/

[8]

通过对比 Python 来学习 PostScript: https://kenschutte.com/postscript-vs-python

[9]

Python 中不那么随意的性能优化: https://www.nathom.dev/blog/casual_performance_optimization_python/

[10]

在 Python 中创建上下文管理器: https://www.pythonmorsels.com/creating-a-context-manager/

[11]

一个简单的模块,可以篡改 Python 解释器的数字: https://kenschutte.com/python-swap-ints

[12]

为什么说 Python 很糟糕……: https://josvisser.substack.com/p/why-python-is-terrible

[13]

Python 中错误处理的最佳实践: https://pybit.es/articles/python-errors-should-not-pass-silently/

[14]

使用企业数据和 Python 构建 GPT 对话机器人: https://www.pythongasm.com/build-gpt-powered-chatbots-around-enterprise-data-with-python

[15]

Python 鸡尾酒:将上下文管理器和迭代器等量混合: https://www.bitecode.dev/p/python-cocktail-mix-a-context-manager

[16]

索引的力量:利用 Pandas 提高数据整理效率: https://stackabuse.com/the-power-of-indexing-boosting-data-wrangling-efficiency-with-pandas/

[17]

杀死 ProcessPoolExecutor: https://www.tinybird.co/blog-posts/killing-the-processpoolexecutor

[18]

pyinstrument:Python 的调用堆栈分析器: https://github.com/joerick/pyinstrument

[19]

viztracer:低开销的日志记录/调试/分析工具,可视化 Python 代码的执行: https://github.com/gaogaotiantian/viztracer

[20]

tenacity:Python 重试库: https://github.com/jd/tenacity

[21]

litestar:轻量、灵活且可扩展的 ASGI API 框架: https://github.com/litestar-org/litestar

[22]

Starlette: https://github.com/encode/starlette

[23]

Make-It-3D:利用单个图像创建高保真 3D 模型: https://github.com/junshutang/Make-It-3D

[24]

Color-diffusion:对黑白图像进行着色的扩散模型: https://github.com/ErwannMillon/Color-diffusion

[25]

DevOpsGPT:AI 驱动的自动化软件开发系统: https://github.com/kuafuai/DevOpsGPT

[26]

ILibCST:Python 的具体语法树解析器和序列化器库: https://github.com/Instagram/LibCST

[27]

hypothesis:功能强大、灵活且易于使用的库,用于基于属性的测试: https://github.com/HypothesisWorks/hypothesis

[28]

Python People 播客: https://pythonpeople.fm/

[29]

Talk Python To Me #426:PyScript 的新增功能: https://talkpython.fm/episodes/show/426/whats-new-in-pyscript-august-2023

[30]

Stack Overflow Blog #597:了解 SRE: https://stackoverflow.blog/2023/08/08/understanding-sre-ep-597/

[31]

Stack Overflow Blog #593:Python 团队如何调整语言以适应 AI 的未来: https://stackoverflow.blog/2023/07/25/how-the-python-team-is-adapting-the-language-for-an-ai-future-ep-593/

[32]

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

[33]

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

[34]

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

[35]

博客: https://pythoncat.top

[36]

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

[37]

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

[38]

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

[39]

Telegram: https://t.me/pythontrendingweekly

[40]

Twitter: https://twitter.com/chinesehuazhou

f53ec43f91f39b57535987cd92de69d0.gif

如果你觉得本文有帮助

请慷慨分享点赞,感谢啦

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dubbo3-高级特性

dubbo-admin 1.dubbo-admin管理平台,是图形化的管理页面 2.从注册中心中获取所有的提供者/消费者进行配置管理 3.路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡等管理功能 dubbo-admin是一个前…

一文读懂!一年耗能堪比2个三峡电站的大数据中心,背后竟隐藏着这些秘密......

全国大数据中心1年的能耗规模相当于2个三峡电站一整年的发电量,这是为什么? 大数据中心每耗费1度电,只有一半用在了“计算”上面,其他的都应用在散热、照明等方面到底是怎么回事? 为什么说在算力上每投入1元&#xff0…

【CI/CD】基于 Jenkins+Docker+Git 的简单 CI 流程实践(下)

基于 JenkinsDockerGit 的简单 CI 流程实践(下) 5.环境测试 5.1 远程 clone 代码测试 clone 云主机 docker-git 上的仓库 tomcat-java-demo.git: [rootdocker-jenkins ~]# yum install git vim wget -y [rootdocker-jenkins ~]# git confi…

【数据结构】-- 栈和队列

🐇 🔥博客主页: 云曦 📋系列专栏:数据结构 💨吾生也有涯,而知也无涯 💛 感谢大家👍点赞 😋关注📝评论 文章目录 前言一、栈📙1.1 栈…

windows程序基础

一、windows程序基础 1. Windows程序的特点 1.用户界面统一、友好 2.支持多任务:允许用户同时运行多个应用程序(窗口) 3.独立于设备的图形操作 使用图形设备接口( GDI, Graphics Device Interface )屏蔽了不同硬件设备的差异,提供了设备无关的图形输出能力…

“新基建”重新定义大数据安全

摘要:数字信息经济发展时代,大数据已逐渐成为最新和最重要的生产要素。国家大力支持推进“新基建”发展战略,由此带来的大数据安全挑战俨然愈发严峻。“新基建”重新定义了大数据安全,面对层出不穷的网络安全事件,需要构建主动安全防御体系。 关键词:新…

前端开发环境搭建,换新电脑前端开发的步骤,node环境配置

一、下载安装nodeJS 1、下载地址官方网址 NodeJs 2、下载完成后,双击“node-v11.5.0-x64.msi”,开始安装Node.js,一路next,注意:安装目录看自己需求,本人安装在D:\nodejs目录下 3、测试 键盘按下【winR…

Kotlin读写分离CopyOnWriteArrayList

Kotlin读写分离CopyOnWriteArrayList 基于读写分离思想Copy-On-Write(COW)设计的线程安全ArrayList变体,读读共享、写写互斥、读写互斥、写读互斥。读时直接读,不用加锁同步,线程安全。写/删/修改数据时复制一个副本,在新的List副…

挣钱和赚钱是两个概念

挣钱和赚钱虽然听起来很相似,但实际上是两个完全不同的概念。 挣钱通常指的是通过劳动或者服务换取报酬,比如说工资、兼职、打零工等等。而赚钱则是指通过投资、创业等方式获得利润或者收益。 挣钱是一种被动的收入方式,需要付出时间和劳动才…

政策因子条件列表类型

type:1(多选下拉输入) 目前选项是本地写死得,传参拼接了carOwner这些东西,形式是多选输入 type:2 (普通指定形式) type:3(普通区间形式) type:4 (指定输入) 指定除外得特殊一种&…

Chrome浏览器安装Axure插件无法打开本地axure文件

Chrome浏览器安装Axure插件无法打开本地axure文件 Chrome浏览器按照axure插件即可打开 1,下载axure插件,由于Chrome国内连不了商店,只能另外下载 https://download.csdn.net/download/u013303534/88204888 2,Chrome安装插件&#…

c++11 标准模板(STL)(std::basic_stringbuf)(二)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allocator<CharT> > class basic_stringbuf : public std::basic_streambuf<CharT, Traits> std::basic_stringbuf…

从零开始学习 Java:简单易懂的入门指南之抽象类接口内部类(十一)

面向对象进阶&#xff08;抽象类&接口&内部类&#xff09; 第一章 抽象类1.1 概述1.1.1 抽象类引入 1.2 abstract使用格式1.2.1 抽象方法1.2.2 抽象类1.2.3 抽象类的使用 1.3 抽象类的特征1.4 抽象类的细节1.5 抽象类存在的意义 第二章 接口2.1 概述2.2 定义格式2.3 接…

排序算法——基数排序(C语言)

基数排序的概念&#xff1a; 什么是基数排序&#xff1f;&#xff1f;&#xff1f;基数排序是一种和快排、归并、希尔等等不一样的排序...它不需要比较和移动就可以完成整型的排序。它是时间复杂度是O&#xff08;K*N&#xff09;&#xff0c;空间复杂度是O&#xff08;KM&…

【C语言】memcpy()函数

目录 一.memcpy()函数简介 1.函数功能 2.函数参数 1>.void * destination 2>.const void * source 3>.size_t num 3.函数返回值 4.函数头文件 二.memcpy()函数的具体使用 1.使用memcpy()函数完成拷贝整型数组数据 2.使用memcpy()函数拷贝结构体数据 三.模…

善于用兵的人,军队粮草取自敌人

善于用兵的人&#xff0c;军队粮草取自敌人 【安志强趣讲《孙子兵法》第8讲】 【原文】 善用兵者&#xff0c;役不再籍&#xff0c;粮不三载&#xff1b;取用于国&#xff0c;因粮于敌&#xff0c;故军食可足也。 【注释】 役不再籍&#xff1a;役&#xff0c;兵役&#xff1b;…

横向移动-域控提权

横向移动-域控提权 CVE-2021-42287 由于Active Directory没有对域中计算机和服务器账号进行验证&#xff0c;经过身份验证的攻击者利用该漏洞绕过完全限制&#xff0c;可将域中普通用户权限提升为域管理员权限并执行任意代码。 利用条件 前提条件&#xff1a;一个域内普通账…

js jquery写一个画板 实现撤回、清空、换色的功能

画布的canvas画板的大小就是这个画板图片的大小 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><metaname"viewport&qu…

鸿蒙剥离 AOSP 不兼容 Android 热门问题汇总,不吹不黑不吵

上周发了一篇 《鸿蒙终于不套壳了&#xff1f;纯血 HarmonyOS NEXT 即将到来》的相关资讯&#xff0c;没想到大家「讨&#xff08;fa&#xff09;论&#xff08;xie&#xff09;」的热情很高&#xff0c;莫名蹭了一波流量&#xff0c;虽然流量对我来说也没什么用&#xff0c;但…

HOT82-杨辉三角

leetcode原题链接&#xff1a;杨辉三角 题目描述 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例…