Python潮流周刊#7:我讨厌用 asyncio

news2024/11/17 7:38:41

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

c41bc90d43e7b4c4f54c5f55d8cada3c.png

你好,我是猫哥。这里记录每周值得分享的 Python 及通用技术内容,部分为英文,已在小标题注明。(标题取自其中一则分享,不代表全部内容都是该主题,特此声明。)

由于公众号不支持外链,文中大量链接无法点击。可直达我的博客阅读(复制链接到浏览器中打开):https://pythoncat.top/posts/2023-06-17-weekly7

🦄文章&教程

1、AsyncIO (英)

文章的作者讨厌 asyncio 库,认为使用 asyncawait 的设计十分糟糕,它与大多数库不兼容,也不满足“Python之禅”的一些标准。作者的推荐方案是 gevent,提及了它的几点好处。另外,作者还推荐了两篇相关的文章:Flask 作者 Armin Ronacher 的《I don't understand Python's Asyncio》,SQLAlchemy 作者 Mike Bayer 的《Asynchronous Python and Databases》

2、gevent 到底是什么?(英)

gevent 是一个基于协程的协作式多任务 Python 框架,使用猴子补丁来协调所有代码。这篇文章是一个系列的第一篇,介绍了 gevent 的基本实现原理,第二篇是《Gevent Correctness》,第三篇是《Gevent Performance》

3、ReactPy 的入门教程 (英)

上期周刊推荐过的 ReactPy 最近很火,它支持用 Python 写 React 风格的前端应用。这里是一篇简单的入门教程。另外,建议感兴趣的同学去看官方文档。

70b4e0e5bb0588bb700d534300b82038.png

reactpy 的 hello world 程序

4、Python 业务框架循环依赖和全局上下文的一些思考

如何简单而优雅地解决 Python 的循环依赖问题呢?作者考察了主流 API 框架(Django、Flask、FastAPI)的上下文管理方案,然后介绍了自己框架采用的方案:借鉴了 Ray 社区中对象所有权的概念,在一个协程上实现一个简易的所有权字典。

5、Python 函数调用的实际依赖关系跟踪 (英)

跟踪 Python 函数调用时访问的代码和数据是一种很有用的操作,比如绘制依赖图、调试和分析性能、缓存失效。这篇文章考察了一种可能的实现方式,包含了一个少于 100 行代码的最小可行实现。作者是 MIT 的计算机科学博士。

6、Python 3.x从基础到实战 - typing类型提示

这是一篇入门教程,通过简短的示例,介绍了 Python Typing 模块的基础用法和进阶用法。

7、wxPython 入门教程 (英)

wxPython 是跨平台的图形用户界面框架,基于 wxWidgets 库开发,在 1998 年发布。它最新发展到了 4.x 版本,这篇文章基于最新的特性作了详细的入门介绍。

b2af63f2e920c22909d3d8a2aacefc90.png

wxPython 的 hello world 程序

8、Python 装饰器的用法指导

一篇很认真的文章,介绍了装饰器的基本概念和进阶用法。在示例部分介绍了 Django 的几个很常用的装饰器(@login_required@permission_required@csrf_exempt@cache_page)。

9、在进程间共享 Numpy 数组的 7 种方式 (英)

多进程编程时最麻烦的事情之一就是共享数据,这篇文章介绍了 7 种共享 Numpy 数组的方式:传递参数、使用全局变量、使用队列 Queue、使用管道 Pipe、使用基于 ctypes 的 RawArray、使用 Python 3.8 的 SharedMemory、使用多进程的管理器。这是一篇系统性的长文,里面还引用了作者的一些相关文章,十分推荐阅读。

10、在 Python 中作时间序列分析的工具 (英)

时间序列数据(Time-Series Data)是指在不同时间点上收集的数据,这篇文章介绍了在 Python 中分析时间序列数据的工具,包括常用的 NumPy、pandas 和 Matplotlib,以及 Tsfresh、Sktime、AutoTS、Prophet、Timescale 等。

d8c4f522ca384d21494b80bf0aca772a.png

11、如何快速处理缺失的数据 (英)

在数据分析和机器学习领域,需要尽量确保数据集的完整性和准确性,因此处理缺失值是必不可少的环节。文章先介绍了数据缺失的原因和模式(完全随机丢失 、随机丢失和不随机丢失),然后介绍了处理缺失值的常用方法:删除、填充、插补。

12、Cython 与 CPython:对比性能差异 (英)

这篇文章用 10 个不同的基准作性能比较,涵盖了多种场景及边缘情况,包括斐波那契数列、斐波那契数列(迭代)、矩阵乘法、质数生成、字符串拼接、计算均值、计算均值(未优化)、算术运算、文件操作、线性搜索、冒泡排序。猜猜最后的结论是什么呢?

13、使用 FastAPI 进行流式处理 (英)

服务器推送事件 (Server-Sent Events) 是一种基于 HTTP 的单向通信协议,允许服务器向客户端实时推送数据。这篇文章解释了如何使用 FastAPI 实现流式处理 JSON 事件。文章出自“FastAPI Pro 系列”,另外两篇文章关于如何使用动态配置、如何加密保护 API。

ef5cfc9a9a51ec3aa88c7b083f922154.png

SSE 示意图

14、20 道关于 FastAPI 中间件的面试题 (英)

中间件(middleware)是 FastAPI 中的一种机制,允许在 HTTP 请求和响应到达路由处理程序之前拦截和修改它们。文章包含 20 个与中间件、身份验证和授权相关的面试题。

15、CPython 添加返回常量指令 (英)

上期周刊引发了“国内 Python 贡献者数量”的话题,@yihong0618 在推特上留言分享了 @penguin-wwy 给 CPython 提交的这个贡献。该作者发现 LOAD_CONST + RETURN_VALUE 高频出现在 pystats 文档中,因此提交了一个新的 RETURN_CONST 指令,此项贡献在 Python 3.12 基准测试中获得约 10% 的性能提升。

🎁Python潮流周刊🎁已免费发布了 7 期,扫描下方二维码,即可查看全部内容:

 

 

 

🐿️项目&资源

1、argcomplete:命令行自动补全库 (英)

在使用 Python 命令或者命令行工具时,一个痛点是没有补全。使用 argcomplete 后,按 tab 键就可以自动补全。它需要与 argparse 模块一起使用,目前支持 bash 和 zsh 两种 shell。

2、Lawyer LLaMA:中文法律 LLaMA

这是一个系统性学习了中国的法律知识体系的大语言模型,能够正确理解民法、刑法、行政法、诉讼法等常见领域的法律概念,可进行基础的法律咨询,涵盖婚姻、借贷、海商、刑事等。

3、CPM-Bee:百亿参数的中英文双语基座大模型

这是一个完全开源、允许商用的百亿参数中英文基座模型,采用 Transformer 自回归架构,在超万亿(trillion)高质量语料上进行预训练。在中文的 Zero-CLUE 评测基准上,它大幅超越其他模型,位列中文大模型第一。

d9ed72ec0e9c54325ada1156b7d6d51e.png

4、TigerBot:多语言多任务 LLM

也是国内团队开源的大语言模型,根据 OpenAI InstructGPT 论文在公开 NLP 数据集上的自动评测,TigerBot-7B 达到 OpenAI 同样大小模型的综合表现的 96%。

5、BingAI-Client:突破限制的 New Bing

New Bing 集成了 ChatGPT,但是在国内使用的门槛有点高!这个项目的客户端基于 Angular,服务端基于 FastAPI 和 EdgeGPT。在本地部署好后,运行服务端程序即可开始使用客户端。(另外推荐一个项目 go-proxy-bingai,是用 Vue3 和 Go 搭建的 New Bing 演示站点,国内可用,无需登录即可畅聊)

6、tabby:可自托管的 AI 编码助手 (英)

这是 GitHub Copilot 的开源/本地替代品,无需 DBMS 或云服务,拥有 Web UI,支持消费级的 GPU。

(微信上传失败了,请查看原文)

tabby的效果演示

7、pyboke:极简博客生成器

一个功能极简、代码极简、自带四种主题、支持生成 RSS 的静态博客生成器。项目基于 Python 3.10,主要使用的库有 arrow、click、jinja2、mistune 等。

8、gpt-engineer (英)

这是一个基于 ChatGPT4 的 AI 工程师,你只用告诉它需求,然后它会问几个问题,接着生成整个项目代码。提供出来的演示视频非常惊艳!

(微信上传失败了,请查看原文)

gpt-engineer的效果演示

9、audiocraft:音频处理和生成库 (英)

这是 FaceBook 开源的一个 PyTorch 库,有最先进的 EnCodec 音频压缩器/分词器,内含文本到音乐模型 MusicGen,使用了 10K 高质量音乐曲目的内部数据集,以及 ShutterStock 和Pond5 的音乐数据。

10、PythonGUI 教程网站 (英)

Python 中有很多开发 GUI 的库,除了前文提到的 wxPython,还有 Tkinter、PyQt、PySide、Kivy 等等。这个网站上提供了很多 GUI 相关的学习资料。

11、CPython 实现原理

这是一本用 GitBook 制作的在线电子书,翻译自微软独立研究员 Anthony Shaw 的《CPython Internals》。

e8e797cff4a1fd60153b8ad429a43b09.png

🐢播客&视频

1、pybites:定期重构的重要性 (英)

这期播客聊了关于重构的相关话题。

2、三个看似一样的列表,占用内存空间竟然不一样多?

有三个看起来完全一样的列表:[0]*3、[0,0,0]、[0 for _ in range(3)],但是使用 sys.getsizeof() 计算的内存却完全不同。这是为什么呢?这期 B 站视频通过分析字节码和 CPython 解释器源码,非常硬核地分析出了根本原因,值得一看!

3、asyncio的理解与入门,搞不明白协程?看这个视频就够了

这里呼应一下本期标题及第一则内容。asyncio 依然是最主流的异步编程库,近几年也在逐渐发展成熟,很有必要深入学习。这是一则 B 站视频,适合用于入门与加深理解。

🐱福利活动

不定期的福利活动,本期赠书 5 本《Excel 应用大全》,开奖时间 6 月 22 日(端午节)。请给 Python猫公z号发送数字“8007”,获取抽奖资格。

这本书由 Excel Home 团队策划,由多位微软 MVP 通力打造,全面系统地介绍了 Excel 365 & Excel 2021 的技术特点和应用方法,配合大量典型实用的案例,既可以作为初学者的入门指南,也可作为中高级用户的参考手册。

ad49993d3500381e4e42ea68f5c1c8a2.jpeg

🐼关于周刊

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

内容创作要花费大量的时间和精力,如果你觉得有帮助,请随意赞赏、买杯咖啡或在爱发电进行支持!如果你喜欢本周刊,请转发分享给其他需要的同学,让更多人可以从中受益~

订阅方式:Python猫 (可加群)| RSS | 邮件 | Github | Telegram | Twitter

 

 

 

2d0cf0a45b49f617603e9dc3f6e0c38f.gif

如果你觉得本文有帮助

请慷慨分享点赞,感谢啦

 

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

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

相关文章

MySQL 数据库初体验

文章目录 数据库的基本概念数据表数据库数据库管理系统数据库系统 数据库的发展史当今主流数据库介绍SQL Server (微软公司产品)Oracle (甲骨文公司产品)DB2 (IBM公司产品)MySQL (甲骨文公司收购…

S7-200 PLC通信方式有哪些

更多关于西门子S7-200PLC内容请查看:西门子200系列PLC学习课程大纲(课程筹备中) S7-200 PLC通信按通信对象方式分为三种情况:A.与计算机通信;B.与其他PLC通信;C.与其他设备和仪器通信; A.S7-200 PLC与计算机通信 如下图1-1 S7-…

长度延展攻击【密码学】(三)

一、什么是长度延展 假设有两段数据,S和M,以及一个单向散列函数h。 如果我们要将两段数据合并起来,并且还要计算合并后的散列值,这就叫做单向散列函数的长度延展。 二、长度延展攻击 如果S和M都是公开信息,那么S在前还…

网络层:网际控制报文协议ICMP

网络层:网际控制报文协议ICMP 笔记来源: 湖科大教书匠:网际控制报文协议ICMP 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 主机或路由器使用ICMP来发送差错报告报文和询问报文 ICMP报文被封装在IP数据报中发送…

合宙Air724UG Cat.1模块硬件设计指南--I2C接口

I2C接口 简介 I2C总线(Inter-Integrated Circuit)是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。 特性 支持 Fast mode (400Kbps)和 Slow mode&…

探索人工智能在自动化测试中的应用

自动化测试技术从最初的模拟硬件方式,到基于数据驱动,基于关键字驱动,再到现在基于功能和指令驱动的自动化测试技术,在各类软件项目中的应用也越来越多,越来越成熟。自动 背景 自动化测试技术从最初的模拟硬件方式&a…

MATLAB | 如何使用MATLAB获取顶刊《Nature》全部绘图(附带近3年全部图像)

我出了如何使用MATLAB获取期刊《Cell》全部绘图,立马就有粉丝问《Nature》、《Sience》、《PNAS》啥的会不会安排,这期就给大家安排《Nature》全部绘图获取,之后其他期刊也会慢慢安排,但是不会一次性全出完(毕竟不能抓住一个主题就…

【第三次】21级计科计算机组成原理课外练习

【第三次】21级计科计算机组成原理课外练习 一、单选题二、填空题三、程序填空题 一、单选题 2-1假设变量x的位数为n(n>8),x的最低有效字节不变,其余各位全变为0,则对应C语言表达式为。 A.x | ~ 0xFF B.x ^ 0xFF C…

css基础四:说说设备像素、css像素、设备独立像素、dpr、ppi 之间的区别?

一、背景 在css中我们通常使用px作为单位,在PC浏览器中css的1个像素都是对应着电脑屏幕的1个物理像素 这会造成一种错觉,我们会认为css中的像素就是设备的物理像素 但实际情况却并非如此,css中的像素只是一个抽象的单位,在不同…

循环码生成矩阵与监督 (校验) 矩阵

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 循环码生成多项式与…

详解七层反向代理与四层反向代理【Nginx+Tomcat负载均衡、动静分离】

文章目录 1. 反向代理和正向代理概述2.七层反向代理实例2.1 实验环境描述2.2 部署Nginx负载均衡器2.3 部署2台Tomcat应用服务器2.3.1 部署CentOS 7-5 Tomcat服务器2.3.2 部署CentOS 7-6 Tomcat多实例服务器 3.四层反向代理实例3.1 实验环境描述3.2 部署Nginx负载均衡器&#xf…

2023年护网常见面试题汇总!看过的都通过面试啦!

​时间过得很快,回想起去年的这个时候,我也正在准备秋招,今天的我刚刚结束培训。 我的个人情况就读于某双非大学,信息与计算科学(大数据方向,校企合作,一个介于数学与计算机之间的专业&#xf…

JVM调优参数+Visual GC 插件安装及使用,jvm分析

调优的目的是什么呢? 1.就是让系统更加的丝滑,让用户体验变得更好。 2.提升系统的性能,提高效率,充分利用jvm内存。 更多参考->JVM常用调优参数 一.JVM参数配置位置 1.java.lang.OutOfMemoryError: Java heap space 解决方…

微信小程序开发之获取用户头像昵称

本文是对另一篇文档 https://blog.csdn.net/duke_ding2/article/details/130674320 的补充。 环境 微信开发者工具 Stable 1.06.2306020调试基础库 2.32.2 背景 在较低版本(2.27.0及以下)的基础库中,在小程序里可以使用 wx.getUserProfil…

PostgreSQL BTree(B-Link-tree) 索引 基本 实现原理

文章目录 背景BTreeBTreeB-Link-Tree 基本数据结构的插入实现BTree Insert 实现BTree Insert 实现 PostgreSQL BTree实现整体结构BTree 索引创建实现_bt_buildadd_bt_uppershutdown BTree 查询 _bt_search 实现BTree 插入 _bt_doinsert 实现_bt_split 节点分裂_bt_insert_paren…

flyway在Windows下安装及基本使用

文章目录 1. flyway中的SQL脚本命名2. flyway执行SQL脚本演示3. flyway中设置 ${CURRENT_DATE} 为当前时间的值 Flyway是一个开源的数据库迁移工具,用于管理和自动化数据库架构的演进。它允许开发人员和团队对数据库进行版本控制,并通过简单的命令行或脚…

【数据库与身份认证】课程笔记

目标: 知道如何配置MySQL数据库环境认识并使用常见的SQL语句操作数据库在Express中操作MySQL数据库了解Session的实现原理了解JWT的实现原理 目录: 数据库的基本概念安装并配置MySQLMySQL的基本使用在Express中操作MySQL前后端的身份认证 一. 数据库的…

美团一面:OOM后,JVM一定会退出吗?为什么?

说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如美团、拼多多、极兔、有赞、希音的面试资格,遇到一几个很重要的面试题: OOM后,JVM一定会退出吗?为什么? 生产环境&am…

MIT 6.S081 (BOOK-RISCV-REV1)教材第四章内容 -- 上

MIT 6.S081 教材第四章内容 -- 上 引言陷阱指令和系统调用RISC-V陷入机制代码:调用系统调用从用户空间陷入系统调用参数补充 引言 MIT 6.S081 2020 操作系统 本文为MIT 6.S081课程第四章教材内容翻译加整理。 本课程前置知识主要涉及: C语言(建议阅读C程序语言设计…

Django基础入门⑤:模板变量和标签的使用

Django基础入门④:数据表显示和Django模板详讲 模板变量使用模板变量模板标签if标签for标签forloop变量forloop.revcounter 示例forloop.first 和 forloop.last 示例forloop.parentloop 示例 🏘️🏘️个人简介:以山河作礼。 &…