Python潮流周刊#5:并发一百万个任务要用多少内存?

news2024/11/28 20:33:21

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

025be58071078fac8e3c84bb9fcd951c.png

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

由于公众号不支持外链,文中大量链接可通过文末「阅读原文」查看,或者通过这个链接直达我的博客阅读:https://pythoncat.top/posts/2023-06-03-weekly5

文章&教程

1、并发一百万个任务要用多少内存?[1](英文)

文中测试了主流的编程语言(Rust、Go、Java、C#、Python、Node.js 和 Elixir),依次运行 1 个、1 万、10 万和 100 万个任务,统计了这些语言所消耗的内存。随着任务量增加,它们的排名出现了较大变化,让我感觉挺意外的。

a00d0c6f855d0f0a0f85038092fe4873.png
100万任务占用的内存

2、使用这些方法让你的 Python 并发任务执行得更好[2] (英文)

使用 asyncio 有什么最佳实践呢?这篇文章介绍了 asyncio.gather、asyncio.as_completed 和 asyncio.wait API,还介绍了 Python 3.11 中引入的新 asyncio.TaskGroup 特性。(附一篇不完整的译文[3]

3、上岸第一剑,编程语法必修:Python 并发编程[4]

一篇长文,以四个章节(网络编程、多线程、多进程、协程)全面介绍了 Python 并发编程的知识点。

4、Python 多线程编程的终极指南[5] (英文)

也是一篇长文,介绍了 Python 多线程编程的方方面面,真的是一份终极指南。

5、编程语言是如何实现并发的之并发模型篇[6]

依然是长文,介绍了常见的并发模型及不同编程语言是如何实现的。它的姊妹篇是《编程语言是如何实现并发的之操作系统篇[7]》,都是图文并茂,资料翔实。

e94beb2cf9f20a81c54af0992fa1a8c9.png
并发模型

6、鹅厂程序员的 9 个生存法则[8]

作者分享了自己工作多年对代码设计、架构设计和工作思维的经验,比如 DRY 原则、SOLID 原则、高可用设计、如何想尽一切办法“偷懒”,等等。(文中提到了面向对象编程的原则,这里顺便推荐另一位鹅厂程序员的《Python工匠[9]》系列的第 12-14 章)

7、一览 Python 3.12!PEP 701 —— f-string 语法规范化[10]

f-string 是 Python 最好用的特性之一,但它也有诸多限制。即将发布的 3.12 会对 f-string 作语法规范化,详情可查看 PEP-701[11] 。这里分享的文章带大家直观地感受了这个改动在代码的词法解析(lexing)层面的不同。

8、PyCharm:新用户界面的五大亮点[12] (英文)

大家都用上 PyCharm 新的 UI 了么?这份官方教程介绍了新 UI 的使用方法及亮点。

9、PEP-594 已被实现:Python 3.13 将移除 20 个标准库[13] (英文)

Python 3.12 正式版本还要几个月才发布,这边 3.13 已经迫不及待地移除了 20 个标准库。值得一提的是,2to3 项目及 lib2to3 模块也将会被移除。

10、Grasshopper:一个用于负载测试的开源 Python 库[14] (英文)

Locust 是 Python 最主流的分布式负载测试库,而文章介绍的 Grasshopper[15] 是新开源的基于 Locust 与 Pytest 的更全面的性能测试库。

8fb1e3b6f64735583675924cb8f33528.png
Grafana面板展示了Grasshopper和InfluxDB指标

11、Python 装饰器:用包装巫术增强你的代码[16] (英文)

Python 装饰器是增强代码行为和灵活性的强大工具,文章内容从基础到高阶,是不错的学习材料。

12、三个练手项目的实战教程:

  • 用 Python 开发 Telegram 机器人[17] (英文):开发 tg 机器人,教程使用 Tornado 作后端,项目部署在 Render 平台上

  • 花一周末用 Python 实现 DNS[18] (英文):教程指导实现一个 DNS 解析器,总代码仅约 200 行,但作者给出了很多学习材料和代码讲解,你能学到的绝对够多。另外,教程最后还有 7 个练习题,可以进一步开发 DNS 解析器的功能。(Julia Evans 是一个宝藏作者,博客[19]、网站[20] 、pandas-cookbook[21] ,等等,强烈推荐!!!)

  • 用 Python 构建你自己的 Git[22] (英文):这个项目我要给它满分!教程网站设计得独特而酷炫,从最小可行项目起步,逐渐添加代码,手把手教你实现 Git 的各种功能。每章都使用 Git 的差异比对方式,明确告诉你增删了哪些代码,良心满满,全网估计找不着第二家!

5b77b79920b81481b58f8ceb34330581.png
构建自己的 Git

项目&资源

1、frogmouth:一个在终端中浏览 Markdown 的工具[23] (英文)

frogmouth 可以打开本地或 URL 中的 md 文件,具有类似浏览器的导航条、历史记录、书签和目录。

2、使用 Meta AI 的 SAM 进行图像分割的 Python GUI[24] (英文)

一个 Python 桌面程序,为 Meta 公司的 AI 模型 SAM 提供了图形界面,可以提取照片里面的物体。

3、GirlfriendGPT:你的人工智能伴侣[25] (英文)

你有对象了么?这个入门项目使用 ChatGPT 构建一个 AI 伴侣, 拥有个性化的人格、声音以及自拍照!

4、Python 进化之路.pptx[26]

一份技术分享的 PPT 材料,介绍了 Python 3.7-3.11 在性能、类型体验及开发者体验方面的优化。

7b0097571459f586ec1a43810a847799.png
Python解释器优化

5、soundstorm-pytorch:在 Pytorch 中实现 SoundStorm [27] (英文)

SoundStorm 是 Google Deepmind 新提出的一个高效的、非自回归的音频并行生成模型。soundstorm-pytorch 使用 Pytorch 实现了这个模型。

6、asynq:Python 的异步编程库[28] (英文)

asynq 是 Quora 开发的异步编程库,专注于对外部服务的批处理请求。对于 memcache、redis 等存储服务,它发起一次请求批量获取多个 key,比发出多次请求每次获取一个 key 要快得多。

7、Propan:功能强大且易用的 Python 异步 Web 框架[29] (英文)

一个基于 pydantic、fastapi 和 pytest 的异步框架,简化了 MQ 的代码集成,并提供了一个有用的开发工具包。其特点是基于消息架构(Messaging Architecture)设计,所以它还是个声明式的 MQ 框架。

8、talkGPT4All:基于 GPT4All 的一个语音聊天程序[30]

它利用 OpenAI 的 Whisper 模型将用户输入的语音转换为文本,再调用 GPT4All 的语言模型得到回答文本,最后利用文本转语音(TTS)的程序将回答文本朗读出来。

9、lightly:一个用于图像自监督学习的 Python 库[31] (英文)

这是一个用于自我监督学习的计算机视觉框架,以类似 PyTorch 的风格编写,支持使用 PyTorch Lightning 进行分布式训练。

d483dafce1cf50922b3c73bd6c6b19e0.png
相关概念的示意图

播客&视频

1、硬地骇客:独立开发赚钱难?你需要正确的build策略[32]

探讨了在海外独立开发者中最常用的 build in public 策略。我对这期节目很有共鸣,打算针对本周刊的一些数据、周刊的创作流程、个人知识输入及创作体系等话题,不久会做一些分享。

2、代码之外:离开微软、人生在于体验?阅读的意义、主动和被动的人生[33]

这是一档新上线的程序员闲聊播客节目,主题很随性,但常常有能打动人的片段。这里分享的是第一期,它目前已更新到第三期,第三期请的嘉宾是 Vue 的作者尤雨溪!

3、Changelog #526:与你的朋友一起 Git[34] (英文)

这期播客聊了一些 Git 工具,如 Git-Heat-Map、Git-Sim、git-bug、GitUI,等等。因为有两个工具是用 Python 编写的,因此也聊了一些 Python 安装依赖包的话题。Brett Cannon 针对主播们的错误用法,写了一篇回应博客[35] ,主要介绍了 pipx、.pyz 文件以及系统包管理器的正确使用。

4、#418:如何在 Python 程序中加密保存[36] (英文)

“Talk Python To Me”的这期播客探讨如何处理程序要用到的敏感信息,同时也聊到了日常个人密码的保存方案。我正巧本周还看到一篇《2023-21: 我的 1Password 密钥管理实践[37]》,它系统介绍了密码管理、SSH/Shell 集成和 CI/CD 应用等内容。

5、吴恩达三门新的生成式 AI 课程[38] (英文)

使用 OpenAI 的 ChatGPT API 构建系统、LangChain 用于开发 LLM 应用、Diffusion模型是如何工作的。

6、MIT 的三门 Python 相关课程[39] (英文)

麻省理工学院的免费课程:Python 计算机科学和编程简介、经典机器学习、深度学习。

赞助&支持

内容创作不易,如果你觉得有帮助,请随意赞赏[40]、买杯咖啡[41]或在爱发电[42]进行支持!如果你喜欢本周刊,请转发分享给其他需要的同学~

另诚邀赞助者,欢迎通过私信联系。

关于周刊

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

订阅方式:Python猫[43] | RSS[44] | 邮件[45] | Github[46] | Telegram[47] | Twitter[48]

4559fbc99b353f6fd3c7aef0fcd24a7f.jpeg

参考资料

[1]

并发一百万个任务要用多少内存?: https://pkolaczk.github.io/memory-consumption-of-async/

[2]

使用这些方法让你的 Python 并发任务执行得更好: https://towardsdatascience.com/use-these-methods-to-make-your-python-concurrent-tasks-perform-better-b693b7a633e1

[3]

不完整的译文: https://juejin.cn/post/7237424021768011834

[4]

上岸第一剑,编程语法必修:Python 并发编程: https://juejin.cn/post/7237425413873664057

[5]

Python 多线程编程的终极指南: https://programmingeeksclub.com/ultimate-python-multithreading-guide

[6]

编程语言是如何实现并发的之并发模型篇: https://www.bmpi.dev/dev/deep-in-program-language/how-to-implement-concurrency/concurrency-model/

[7]

编程语言是如何实现并发的之操作系统篇: https://www.bmpi.dev/dev/deep-in-program-language/how-to-implement-concurrency/os-scheduling/

[8]

鹅厂程序员的 9 个生存法则: https://segmentfault.com/a/1190000043833549

[9]

Python工匠: https://github.com/piglei/one-python-craftsman

[10]

一览 Python 3.12!PEP 701 —— f-string 语法规范化: https://juejin.cn/post/7238274120881422392

[11]

PEP-701: https://peps.python.org/pep-0701/

[12]

PyCharm:新用户界面的五大亮点: https://blog.jetbrains.com/pycharm/2023/05/five-things-to-love-about-the-new-ui/

[13]

PEP-594 已被实现:Python 3.13 将移除 20 个标准库: https://discuss.python.org/t/pep-594-has-been-implemented-python-3-13-removes-20-stdlib-modules/27124

[14]

Grasshopper:一个用于负载测试的开源 Python 库: https://innovation.alteryx.com/introducing-grasshopper-an-open-source-python-library-for-load-testing/

[15]

Grasshopper: https://github.com/alteryx/locust-grasshopper

[16]

Python 装饰器:用包装巫术增强你的代码: https://hackthedeveloper.com/python-decorator/

[17]

用 Python 开发 Telegram 机器人: https://swiftuser.hashnode.dev/how-to-telegram-bot-with-python

[18]

花一周末用 Python 实现 DNS: https://implement-dns.wizardzines.com/index.html

[19]

博客: https://jvns.ca/

[20]

网站: https://wizardzines.com

[21]

pandas-cookbook: https://github.com/jvns/pandas-cookbook

[22]

用 Python 构建你自己的 Git: https://www.leshenko.net/p/ugit/

[23]

frogmouth:一个在终端中浏览 Markdown 的工具: https://github.com/Textualize/frogmouth

[24]

使用 Meta AI 的 SAM 进行图像分割的 Python GUI: https://github.com/dibrale/samist

[25]

GirlfriendGPT:你的人工智能伴侣: https://github.com/EniasCailliau/GirlfriendGPT

[26]

Python 进化之路.pptx: https://www.slideshare.net/Manjusaka1/python-pptx-258083055

[27]

soundstorm-pytorch:在 Pytorch 中实现 SoundStorm : https://github.com/lucidrains/soundstorm-pytorch

[28]

asynq:Python 的异步编程库: https://github.com/quora/asynq

[29]

Propan:功能强大且易用的 Python 异步 Web 框架: https://github.com/Lancetnik/Propan

[30]

talkGPT4All:基于 GPT4All 的一个语音聊天程序: https://vra.github.io/2023/05/27/talkgpt4all-2-0/

[31]

lightly:一个用于图像自监督学习的 Python 库: https://github.com/lightly-ai/lightly

[32]

硬地骇客:独立开发赚钱难?你需要正确的build策略: https://www.xiaoyuzhoufm.com/episode/647456af6752b5f9de6bd99c

[33]

代码之外:离开微软、人生在于体验?阅读的意义、主动和被动的人生: https://www.xiaoyuzhoufm.com/episode/646af4a66752b5f9dec561c6

[34]

Changelog #526:与你的朋友一起 Git: https://changelog.com/podcast/526

[35]

回应博客: https://snarky.ca/in-response-to-the-changelog-526/

[36]

#418:如何在 Python 程序中加密保存: https://talkpython.fm/episodes/show/418/how-to-keep-a-secret-in-python-apps

[37]

2023-21: 我的 1Password 密钥管理实践: https://xuanwo.io/reports/2023-21/

[38]

吴恩达三门新的生成式 AI 课程: https://www.deeplearning.ai/short-courses/?continueFlag=40c2724537472cbb3553ce1582e0db80

[39]

MIT 的三门 Python 相关课程: https://twitter.com/python_spaces/status/1663976856578822144

[40]

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

[41]

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

[42]

爱发电: https://afdian.net/a/pythoncat

[43]

Python猫: https://img.pythoncat.top/python_cat.jpg

[44]

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

[45]

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

[46]

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

[47]

Telegram: https://t.me/pythontrendingweekly

[48]

Twitter: https://twitter.com/chinesehuazhou

d5fae304be973c9bf8776f4c832e1396.gif

如果你觉得本文有帮助

请慷慨分享点赞,感谢啦

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

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

相关文章

oc 安装 demo 版本

版本 demo 版本用于学习;推荐订阅版本,个人商用,3.0 以下有破解,4.0 据说没有破解版本企业版,企业商用版本。 demo 版本用于学习 demo 安装需要 下载地址 oc安装 官方文档 https://docs.otoy.com/cinema4d/Instal…

Java并发体系-第四阶段-AQS源码解读(有时间就了解一下)

可重入锁 /*** 可重入锁:* 1、可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁,这样的锁就叫做可重入锁。* 2、是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁…

【Java多线程进阶】死锁

前言 死锁(Deadlock)是指两个或多个线程在执行过程中,因争夺资源而造成的一种互相等待的现象,如果不提前预防或外界干扰,这些线程将无法执行下去。因此,本篇博文讲解造成死锁的原因以及解决方案。 目录 1.…

7.条件渲染

目录 1 wx:if 2 wx:elif 3 wx:else 4 block标签配合条件渲染 5 hidden 1 wx:if wx:if 与 v-if 的运行方式相同,都是 删除与创建元素(不是display:none) 2 wx:elif 3 wx:else 4 block标签配合条件渲染 我们现在有一个view套view的页面 现在我不想有外…

Executor框架的两级调度模型

Executor框架的两级调度模型 在HotSpot VM的线程模型中Java线程(java.lang.Thread)被一对一映射为本地操作系统线程。Java线程启动时会创建一个本地操作系统线程;当该Java线程终止时,这个操作系统线程也会被回收。操作系统会调度…

网络io、io多路复用select/poll/epoll、基于事件驱动的reactor

一、网络IO请求 网络I/O请求是指在计算机网络中,向其他主机或服务器发送请求或接收响应的操作。这些请求可以包括获取网页、下载文件、发送电子邮件等。网络I/O请求需要使用合适的协议和通信方式来进行数据传输,例如HTTP、FTP、SMTP等。 要完成一个完整…

【SSH】在VScode远程开发 使用SSH远程连接服务器

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

实训小总结

1. Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也成为万维网,能够通过浏览器访问网站。 在我们日常的生活中,经常会使用浏览器去访问 百度 、 京东 、等这些网站,这些网站统称为Web网站。我们知道了什么是Web,…

超详细的HTML学习笔记:语法特点、骨架结构、基本标签及其属性(附代码示例)

作者想先说一点废话:这篇文章是作者通过学习动力节点、黑马程序员的两套不同的THML课程整理出的学习笔记,融合了两套课程的知识点,耗费了372行代码(加代码注释),希望能帮到大家。HTML只是前端学习的开端&am…

【Redis】聊一下Redis切片集群的原理

背景 在分布式领域中,为了提高系统的稳定性,一般会采用数据复制/镜像的方式,同时部署多个相同功能的节点提供服务,也就是A B C存储的相同的数据。有一个主节点提供读写服务,另外两个节点进行数据的复制,在…

chatgpt赋能python:Python去重-如何高效地处理重复数据

Python去重 - 如何高效地处理重复数据 在数据处理过程中,重复数据可能会导致很多问题,如降低计算效率、影响数据质量等。因此,数据去重是一个非常重要的任务,特别是在大数据处理中更是如此。Python作为一种流行的编程语言&#x…

make xxx_deconfig过程

在uboot中,所写的shell脚本:mx6ull_alientek_emmc.sh的内容如下: #!/bin/bash2 make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- distclean3 make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig4 make V1…

[数据结构习题]队列——用栈实现队列

[数据结构习题]队列——用栈实现队列 👉知识点导航💎:【数据结构】栈和队列 👉[王道数据结构]习题导航💎: p a g e 85.3 page85.3 page85.3 本节为栈和队列的综合练习题 题目描述: &#x1f…

chatgpt赋能python:Python实现CSV文件只取某两列的方法详解

Python实现CSV文件只取某两列的方法详解 介绍 CSV是一种常见的数据格式,通常使用逗号或分号分隔不同的字段。在处理CSV文件时,我们经常需要只提取其中的某些列,以便进行进一步的分析或处理。使用Python语言,可以很方便地实现这一…

MTK 相机功耗分析流程

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、硬件功耗二、相机软件功耗三、参考文档 一、硬件功耗 1.1 硬件信息 以下硬件信息最好提前获取到 模块备注平台MTK or Qcom or sprdCPU频率大中小核…

【Python】Python系列教程-- Python3 列表(十二)

文章目录 前言访问列表中的值更新列表删除列表元素Python列表截取与拼接嵌套列表列表比较Python列表函数&方法 前言 往期回顾: Python系列教程–Python3介绍(一)Python系列教程–Python3 环境搭建(二)Python系列…

第一次使用Arduino IDE(mac os) 配置合宙ESP32C3(9.9包邮)且烧录代码的历程

目录 Arduino 配置ESP32 1. Arduino 请更新至最新版 2.科学上网 3.添加开发板管理URL 配置 1.连接开发板 2.Arduino IDE 的配置 3.烧录代码 Arduino 配置ESP32 1. Arduino 请更新至最新版 2.科学上网 3.添加开发板管理URL 首选项,编辑并添加 https://…

医疗实施-DRG基本知识

医疗实施-DRG基本知识 DRG常见名词定义: DRG(Diagnosis Related Groups):疾病诊断相关分组,是用于衡量医疗服务质量效率以及进行医保支付的一个重要工具。DRG 实质上是一种病例组合分类方案,即根据年龄、疾病诊断、合…

网络安全学术顶会——NDSS 2023 议题清单、摘要与总结(下)

51、Let Me Unwind That For You: Exceptions to Backward-Edge Protection 通过堆栈缓冲区溢出进行反向边控制流劫持是软件利用的终极目标。直接控制关键的堆栈数据和劫持目标使得攻击者特别喜欢这种利用策略。因此,社区已经部署了强大的反向边保护,如影…

Executor框架的成员

Executor框架的成员 (1)ThreadPoolExecutorThreadPoolExecutor通常使用工厂类Executors来创建。Executors可以创建3种类型的ThreadPoolExecutor:SingleThreadExecutor、FixedThreadPool和CachedThreadPool。1) FixedThreadPool 。…