- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。标题取自其中两则分享,不代表全部内容都是该主题,特此声明.
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入.
微信 | 博客 | 邮件 | Github | Telegram | Twitter 。
为了方便读者获取原始内容,我已将周刊的 Markdown 文件归档在 Github,请通过以下链接获取: https://github.com/chinesehuazhou/python-weekly 。
1、 写代码时,优雅有意义吗?
作者强调使用 Python 的核心特性来编写惯用的、富有变现力的、优雅的代码很重要,提出优雅不是可有可无的奢侈品.
2、 Python Asyncio实践--高并发下如何防止缓存击穿 。
文章介绍了如何基于 Asyncio.Future 的特性编写一个语言级别的防缓存击穿的工具—— Share ,并介绍它的使用和高并发下的处理方法.
3、 高效定时任务处理:深入学习 Python 中 APScheduler 库的奥秘 。
APScheduler 是一个强大的定时任务处理库,这篇长文详细介绍了从入门到精通的相关知识,包括创建定时任务、定时任务触发器、任务存储、并发执行、阻塞和非阻塞调度器、错误处理、立即执行任务、调度器持久化、任务监听器和移除定时任务等.
4、 CPython 开发实战:魔改 lambda 函数 。
文章尝试将 Python 的 lambda 函数改成 Javascript 风格的箭头函数。在编译 CPython 时,通过修改 .asdl 文件,重新构造抽象语法树,修改语法分析文件,并利用 pegen 重新生成语法分析器.
5、 CPython 是如何实现引用计数的?
你是否对 CPython 的底层运行原理及其内部结构感到好奇?文章通过分析源码,介绍了 CPython 是如何实现引用计数和内存管理的,涉及引用计数的机制、关键数据结构的解释、字节码指令的执行、引用计数的局限性等.
6、 使用 Importlib 实现 Python 延迟加载 。
延迟加载指的是在使用时再导入模块,而不是在程序刚执行时就加载。它的好处:减少启动时间、降低内存消耗、提高性能、优化资源、运行时加载。文章介绍了 importlib 实现延迟加载的用法。.
7、 使用 Python 和 Playwright 进行端到端测试 。
端到端测试(end-to-end)指的是对程序的整个使用流程从头到尾作测试,可能发现单元测试与集成测试都无法发现的问题。这是一篇详细的入门教程,介绍了 Playwright 的相关用法.
8、 nogil 项目和 Faster CPython 项目 。
Python 官方虽已宣布会接受 PEP-703 ,但是最终版本或许要等到 5 年后的 3.17 版本。从 2021 年起,nogil 和 Faster CPython 项目持续吸引大家的关注,这篇文章梳理了它们两年来的发展情况、一些关键性问题的处理方案和重要进展、近期社区和大公司的回应等。(附: Python 官方第一次针对 nogil 的研讨会 、 Faster CPython 项目的首次亮相 ) 。
9、 简单介绍 Python 的永生对象 。
Instagram 向 Python 贡献了 3.12 版本中的 PEP-683 (永生对象,使用固定的引用计数),它可以绕过引用计数检查,这是多核 Python 并行处理的重要基础。文章介绍了 Instagram 遇到的内存使用问题、为解决问题而引入永生对象、并最终贡献到 CPython 的故事.
10、 为什么要避免在 Python 中用“import *”?
Python 中一个文件是一个模块,拥有自己的命名空间。当使用“import *”时,这会导致“ 命名空间污染 ”!文章指出了遵循 PEP-8 风格的正确写法,同时建议应该用 __all__ 来定义模块中可被导出的变量名.
11、 让我们终结 Python 的依赖地狱 。
pixi 是最新发布的用 Rust 编写的 Python 包管理器,这篇文章出自其官方博客,主要介绍为什么要开发这个项目、它提供了哪些功能、它的基本执行过程。项目当前基于 Conda 生态,暂不支持 PyPI.
12、 使用 Django Rest Framework 实现 JWT 身份验证 。
一篇非常详细的教程,介绍了 JWT 是什么以及它的工作原理,演示了如何用 DRF 实现 JWT 身份验证的全过程.
13、 增强 Django 程序:提升数据库查询的 7 个妙招 。
数据库查询是影响 Web 程序性能的主要因素之一,这篇文章介绍了 7 个提升性能的技巧:设置查询语句的超时时间、使用 assertNumQueries 测试查询数、使用 nplusone 捕获 N+1 查询、使用 django-zen-queries 捕获 N+1 查询、避免对预取对象作新的查询、使用 defer() 防止获取大的未使用字段、避免在大字段上使用 distinct() .
14、 可能让你大吃一惊的奇怪的 Python “特性” 。
有时候我们会在编程语言中看到一些奇怪的现象,它们可能是一些非常冷门的“特性”,也可能会让人误以为是 bug 或者因理解错误而造成 bug。作者介绍了他的几个小发现.
15、 可汗学院如何将 Python 后端重写成 Go?
可汗学院使用 Python 做了 10 年的主力语言,然而在 2020 年前后彻底转向了 Go 阵营。这篇文章介绍了它为什么以及如何将 Python 2 后端整体重构成 Go 服务。文中引用了可汗学院总结性的一系列博客,可作延伸阅读.
16、 为什么静态语言会面临复杂性的挑战?
这是一篇思考编程语言该如何设计的长文!作者指出现代编程语言存在“ 静态-动态双形性 ”问题,提出理想的编程语言应该同时具有静态和动态的特性。文章分析了 Idris 和 Zig 两种语言的做法,并指出其局限性,最后提出应该重新思考编程语言.
🎁 Python潮流周刊 🎁已免费发布了 16 期,访问下方链接,即可查看全部内容: https://pythoncat.top/tags/weekly 。
原文: https://pythoncat.top/posts/2023-08-19-weekly 。
1、 pixi:Rust 开发的基于 Conda 的包管理器 。
一个基于 Conda 生态的包管理器,支持所有操作系统,支持多种语言的 Conda 包,拥有类似 Cargo 的命令行界面,完全用 Rust 编写。支持按照项目来安装包,也支持全局安装,此行为类似于 pipx 和 condax .
2、 briefcase:将 Python 项目转换为独立的应用 。
支持打包成 Mac、Windows、Linux、Android 和 iPhone 的应用,以及使用了 PyScript 作客户端的静态 Web 站点。(star 2K) 。
3、 facechain:可生成数字分身的深度学习工具链 。
上周的热门项目,仅需三张照片即可生成个人的数字分身。底层使用了 Stable Diffusion 的文生图功能,训练时可选择多种风格的 LoRA 模型,也支持添加个性化的 prompt,实现变装效果。(star 3.2K) 。
4、 modelscope:将 Model-as-a-Service 概念变为现实 。
“模型即服务”(MaaS)汇集 AI 社区中最先进的机器学习模型,并简化在实际应用中使用 AI 模型的流程。它已有 700+ 模型,涵盖自然语言处理、计算机视觉、语音、多模态等。(star 3.6K) 。
5、 viberary:基于语义的书籍搜索引擎 。
不是根据体裁和书名等常规条件,而是根据提示语来搜索相关的书籍。基于 双塔语义检索模型 ,使用 DuckDB 在本地训练数据,使用 Redis Search 模块作检索,通过 Flask API 和 Bootstrap 前端展示结果.
6、 polar:帮助开源维护者获得更好的资助 。
它为开源维护者搭建一个平台,可便捷地设置、运营、推广面向支持者的增值及订阅服务,帮助开发者从开源项目中获取收入。这个项目已获得 180 万美元的种子轮投资.
7、 youre-the-os:一个游戏,让你扮演操作系统! 。
一个很有意思的游戏!你需要扮演操作系统,管理进程、内存和 I/O 事件,不能让进程空闲太久,不然就 game over!项目依赖 Python 3.11 和 pipenv ,也可以上这个网站 在线体验 。(star 1K) 。
8、 learndb-py:通过从头实现数据库来学习 。
这个项目从头实现一个关系型数据库,借鉴了 sqlite 数据库。关键的特性:支持丰富的 sql、使用 lark 构建自定义词法分析与解析器、支持用户和代理方式连接、实现 BTree 作数据存储.
9、 mpire:比标准库更快的多进程开发库 。
比其它多进程库更快,且功能更多:结合了 multiprocessing.Pool 使用写时复制的共享对象的优点、有丰富的状态管理功能、使用 tqdm 实现进度条、支持在仪表板查看进度,等等。(star 1.5K) 。
10、 diaphora:二进制文件的差异比对工具 。
如何比对一个软件在两个版本间的差异?比较二进制软件的差异时,涉及哪些匹配技术?这个项目号称是目前最强的软件差异比对工具!(star 3.1K) 。
11、 beartype:近实时的静态类型检查工具 。
一个近实时(NRT)的纯 Python 运行时类型检查工具,将 Rust 和 C++ 的零成本对象带入动态类型的 Python 世界。它可有选择性地将 Python 的鸭子类型转换成静态类型,同时默认保留前者的优点。项目文档中称“你可以同时像鸭子一样嘎嘎叫,以及像熊一样咆哮”!(star 2K) 。
12、 cs_books:AzatAI 推荐的计算机科学书籍 。
这个仓库收录了 200 多本计算机科学类书籍,仅限教育用途! 。
1、 超越 PEP-8 -- 漂亮易懂代码的最佳实践 。
这个视频出自 PyCon 2015,介绍如何写出优雅的 Python 代码。在油管上已有 8200+ 点赞。演讲者 Raymond Hettinger 参与贡献了大家熟知的很多 Python 特性,比如 enumerate() 函数、生成器表达式、OrderedDict()、条件表达式、set 对象等.
2、 只需 5 个步骤,将“勉强能用”的代码变成 Pythonic 。
写出能用的代码不应该成为最终目标,这只是一个开始!这个视频使用了__getitem__、__len__、__enter__ 和 __exit__ 等魔术方法,将难以维护的代码重构得 Pythonic。作者自称这是对上一则分享的 8 分钟浓缩版.
如果你觉得周刊有价值,请随意 赞赏 或 买杯咖啡 进行支持! 。
如果你喜欢周刊,请分享给其他需要的同学,让更多人可以从中受益~ 。
- 微信公众号 :除更新周刊外,还发布其它原创作品,并转载一些优质文章。(可加好友,可加读者交流群) 。
- 博客 及 RSS :我的独立博客,上面有历年原创/翻译的技术文章,以及从 2009 年以来的一些随笔.
- Github :你可以获取本周刊的 Markdown 源文件,做任何想做的事! 。
- 邮件 :在 Substack 上开通的频道,满足你通过邮件阅读时事通讯的诉求.
- Telegram :除了发布周刊的通知外,我将它视为一个“副刊”,补充发布更加丰富的资讯.
- Twitter :我的关注列表里有大量 Python 相关的开发者与组织的账号.
最后此篇关于Python潮流周刊#16:优雅重要么?如何写出Pythonic的代码?的文章就讲到这里了,如果你想了解更多关于Python潮流周刊#16:优雅重要么?如何写出Pythonic的代码?的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类
我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,
我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p
假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python
这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第
我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re
我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("
剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome
假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最
所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co
我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name
考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)
如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l
我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除
我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe
list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge
这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告
我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju
我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth
学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来
我是一名优秀的程序员,十分优秀!