2024 05 08 HackerNews

一句话摘要 #

  1. Apple introduces M4 chip 苹果公司推出了采用第二代3纳米技术的M4芯片,为iPad Pro带来卓越的性能和全天电池续航。
  2. Caniemail.com – like caniuse but for email content Caniemail.com是一个支持HTML和CSS在电子邮件中使用的支持表格网站,提供最新的功能更新和电子邮件客户端评分。
  3. The best way to have complex discussions? 文章讨论了如何通过书面异步讨论来避免冲动性回应并促进深思熟虑的回应,介绍了CQ2工具以帮助进行复杂讨论。
  4. Road resurfacing during the daytime without stopping traffic [video] 视频展示了瑞士ASTRA Bridge在白天进行路面重铺工作,同时保持交通畅通。
  5. Attackers can decloak routing-based VPNs TunnelVision技术揭示了VPN中的一个基本设计问题,攻击者可以利用DHCP强制目标用户的流量从VPN隧道中流出。
  6. Proton Mail discloses user data leading to arrest in Spain Proton Mail在法律请求下披露用户数据,导致一名用户在西班牙被捕,引发了对隐私和加密通讯服务限制的讨论。
  7. Cold brew coffee in 3 minutes using acoustic cavitation UNSW Sydney的工程师们开发了一种使用超声波技术快速制作冷萃咖啡的方法,将制作时间从数小时缩短至几分钟。
  8. Pyspread – Pythonic Spreadsheet Pyspread是一个基于Python编程语言的电子表格应用程序,每个单元格都期望包含Python表达式,目标用户群体是有Python编程经验的用户。
  9. Vets fret as private equity snaps up clinics, pet care companies 文章讨论了私募股权公司收购兽医诊所和宠物护理公司对兽医行业的影响,包括提高价格和削减服务的担忧。
  10. How Python asyncio works: recreating it from scratch 文章通过示例代码介绍了如何从头开始重新创建Python的asyncio库,帮助读者理解asyncio的核心原理和工作流程。

2024-05-08 Hacker News Top Stories

Apple introduces M4 chip #

https://www.apple.com/newsroom/2024/05/apple-introduces-m4-chip/

2024 年 5 月 7 日,苹果公司宣布推出了全新的 M4 芯片,这是最新的由苹果设计的芯片,为全新的 iPad Pro 带来了卓越的性能。M4 芯片采用第二代 3 纳米技术制造,是一款系统芯片(SoC),提升了苹果硅片的行业领先功耗效率,并实现了 iPad Pro 的惊人薄设计。它还配备了全新的显示引擎,驱动着 iPad Pro 上突破性的 Ultra Retina XDR 显示屏的精密、色彩和亮度。新的 CPU 具有高达 10 个核心,而新的 10 核 GPU 在 M3 中引入的下一代 GPU 架构基础上进行了改进,并首次为 iPad 带来了动态缓存、硬件加速光线追踪和硬件加速网格着色。M4 拥有苹果迄今最快的神经引擎,每秒可进行高达 38 万亿次操作,比今天任何 AI PC 的神经处理单元都要快。结合更快的内存带宽、CPU 中的下一代机器学习(ML)加速器以及高性能 GPU,M4 使新的 iPad Pro 成为一款极具人工智能功能的强大设备。

M4 还配备了一个全新的显示引擎,实现了 Ultra Retina XDR 显示屏的惊人精度、色彩准确度和亮度均匀性。新的 CPU 在性能上比前一代 iPad Pro 中强大的 M2 快了 1.5 倍。M4 的新 10 核 GPU 现在比 M2 快了四倍。M4 还包括苹果迄今最强大的神经引擎,每秒可进行 38 万亿次操作,比 A11 Bionic 中的第一个神经引擎快了 60 倍。M4 还具有先进的媒体引擎,支持 AV1 硬件加速,为 iPad 带来更流畅、高效的流媒体体验。同时,M4 的高效性能有助于全新的 iPad Pro 满足苹果对能源效率的高标准,并提供全天电池续航。苹果计划到 2030 年在全球范围内实现碳中和,包括整个制造供应链和每款产品的整个生命周期。


HN 评论 1126 comments | 作者:excsn | 9 hours ago #

https://news.ycombinator.com/item?id=40286029

  • M4 芯片搭载了下一代 ML 加速器、高性能 GPU 和高带宽统一内存,Neural Engine 使其成为 AI 方面极具威力的芯片。
  • Apple 的 AI 策略是将推理(甚至长期学习)放在边缘设备上,与隐私至上的策略完全一致。
  • Apple 正在利用硬件销售 AI,这是一个明智之举。
  • iPhone 对于年轻一代而言更多是商品实用工具,而非奢侈品。
  • Apple 正在利用 CPU 动力扩展 AI 功能,保持高价位,与 CPU 性能相关的硬件价格。
  • Apple 的隐私策略可能会改变,但目前他们在支持旧手机方面表现良好。
  • Apple 的 AI 策略可能会取得成功,边缘计算对于用户体验有巨大优势。
  • Apple 的产品将在 2030 年前实现碳中和,包括终身充电排放。
  • 将数据处理分配给最终用户可节省数据中心能源,但仍需在设备外部进行处理。

Caniemail.com – like caniuse but for email content #

https://www.caniemail.com/

网站 https://www.caniemail.com/ 是一个支持 HTML 和 CSS 在电子邮件中使用的支持表格网站。该网站提供了最新的功能和新闻,包括最新的 CSS 功能更新和电子邮件客户端评分。

网站由 @HTeuMeuLeu 和 Tilt Studio 团队创建和维护,基于 @Fyrd 的 caniuse.com,设计由 @Lensco 完成。此外,还基于 @M_J_Robbins 和 Rebel 团队的原始名称和想法。网站接受来自 GitHub 社区的支持数据贡献。用户可以在网站上查看最新功能、新闻以及各个电子邮件客户端的支持评分。


HN 评论 227 comments | 作者:fagnerbrack | 1 day ago #

https://news.ycombinator.com/item?id=40280490

  • mjml 和 Litmus 是构建电子邮件模板的有用工具
  • 欧盟无障碍法案可能会促使组织关注电子邮件的可访问性
  • 大多数电子邮件客户端支持同时发送 HTML 和文本版本
  • Gmail 在邮件超过 104kb 时会裁剪邮件
  • 使用 mjml 可能会导致在 Gmail 中裁剪邮件
  • 推荐使用 react-email 来构建电子邮件
  • Outlook 使用 IE9 引擎来渲染 HTML 邮件
  • HTML 邮件支持的 CSS 属性有限
  • 一些人认为 HTML 邮件是电子邮件的最糟糕之处,而纯文本内容是最好的
  • 人们希望在电子邮件中看到精美的文本和图形
  • 电子邮件中的一些格式对于发送者和接收者都很重要
  • 一些人认为纯文本电子邮件是最好的内容形式,而另一些人则认为 HTML 格式更重要

The best way to have complex discussions? #

https://cq2.co/blog/the-best-way-to-have-complex-discussions

这篇文章讨论了如何进行复杂讨论的最佳方式。作者指出,在复杂讨论中最令人沮丧的问题是冲动性回应和缺乏结构。传统的面对面讨论容易导致冲动性回应,同时很难为其提供良好的结构,因此并不适合复杂话题。为了解决这个问题,作者提倡书面的异步讨论,因为它们有助于在一定程度上避免冲动性回应,并促进深思熟虑的回应。然而,书面的异步讨论也存在缺乏结构的问题。

作者提到了一些常见的讨论平台,如 Discourse 和 Slack,它们在处理复杂讨论时存在问题,比如无法有效组织评论、无法清晰地跟踪回复等。为了解决这些问题,作者介绍了一个名为 CQ2 的免费开源工具,旨在帮助进行复杂讨论。CQ2 允许创建主题内的主题,使每个主题保持主题和有组织性,避免了“引用地狱”,并提供了更清晰的讨论结构。

CQ2 的复杂讨论方式包括创建讨论、评论和创建主题、打开主题、导航以及总结等步骤。该工具还计划推出更多有趣和实用的功能,如富文本、工作区、自定义主题标题、提及、慢速模式、有用的反应等。通过 CQ2,作者希望帮助人们进行更好的讨论,最终系统地达到真相,更好地理解他人并做出更好的决策。


HN 评论 285 comments | 作者:anandbaburajan | 1 day ago #

https://news.ycombinator.com/item?id=40277547

  • Usenet 在效率和深度长期讨论方面优于现代平台,但受限于垃圾信息和发展方向。
  • Reddit 等平台缺乏 Usenet 的浏览和跟踪工具,导致讨论质量下降。
  • 大型论坛如 Reddit 导致讨论质量下降,无法追踪新评论,难以过滤内容。
  • Google+、Ello 等平台的“通知”功能支持长时间讨论,但用户较少。
  • HN 的讨论质量参差不齐,缺乏更好的评论筛选工具。
  • Usenet 因垃圾信息和 Web 论坛兴起而式微。
  • Usenet 的分布式特性使其难以使用,与 Web 不同。
  • Usenet 的衰落与资金模式有关,缺乏可持续发展模式。
  • 4chan 风格的线性时间轴可能适合复杂讨论,但结构需改进。
  • 线性结构可能更适合复杂讨论,但 UI 需改进以提高导航性。
  • DAG 结构可能更适合复杂讨论,但编辑需谨慎以保持结构。
  • LLM 可以帮助生成理想化的辩论结构,提高讨论效率。
  • 线性讨论结构可能更适合团队内部复杂话题讨论。
  • 通过机器学习监听电话会议并生成总结和行动项,将两种世界的优势结合起来。

Road resurfacing during the daytime without stopping traffic [video] #

https://www.youtube.com/watch?v=ymyIEGRw4-U

这个 YouTube 视频的标题是“ASTRA Bridge Deckbelagsarbeiten”。视频内容介绍了自 2024 年 4 月初以来,位于前往苏黎世方向的 A1 高速公路上的移动工地桥 ASTRA Bridge 再次投入使用。

ASTRA Bridge 下方的铺设工作正在有序进行。在桥下进行工作时,桥上的交通以 60 公里/小时的速度双车道通行。


HN 评论 167 comments | 作者:sschueller | 8 hours ago #

https://news.ycombinator.com/item?id=40287020

  • 工程师和负责机构不放弃,勇敢进行第二次改进尝试,技术表现出色,社会表现同样令人印象深刻。
  • 工人喜欢在桥下工作,因为可以在阴凉下规律工作,有更多空间,交通在上方。
  • 担心工人在桥下工作时受到颗粒物和沥青挥发物的影响,类似于在矿井中工作。
  • 美国的道路施工流程是否遵循同样的精确标准,各州情况不同,类似欧盟,每个州仍然是主权国家。
  • 美国的道路施工过程无法与瑞士的精密程度相提并论。
  • 美国的施工工人数量不足,PPE 不统一,设备不干净,使用的材料不足,文化差异很大。
  • 美国的道路施工与瑞士的道路施工有很多差异,包括劳动力数量、PPE、设备清洁度、车辆规模等。

Attackers can decloak routing-based VPNs #

https://www.leviathansecurity.com/blog/tunnelvision

这篇博文介绍了一种名为 TunnelVision 的新型网络技术,发现了 VPN 中的一个基本设计问题。

攻击者可以利用 DHCP(动态主机配置协议)的内置功能,强制目标用户的流量从 VPN 隧道中流出,导致用户传输的数据包未经 VPN 加密,使得攻击者可以窥探其流量。作者称这种效果为“解隐”。重要的是,VPN 控制通道仍然保持,因此诸如断开开关等功能永远不会触发,用户在我们观察到的所有情况中仍然显示为连接到 VPN。

作者花费了大量时间探索这种能力,并试图通知尽可能多的受影响方。他们认为作为安全研究人员,向安全和隐私社区以及普通公众通报这一威胁是他们的责任。文章详细解释了网络、VPN 技术和 DHCP 的基础知识,以充分解释解隐行为。

作者提出了一种修复方法,即 VPN 提供商在支持的操作系统上实现网络命名空间,类似于 WireGuard 文档中描述的方法。网络命名空间是 Linux 的一个功能,可以将接口和路由表与本地网络的控制隔离开来。文章还提到了一些缓解措施和问题,以及对操作系统、VPN 提供商和用户的呼吁。文章还提到了一些可能的解决方案和下一步研究方向。


HN 评论 199 comments | 作者:dsr_ | 1 day ago #

https://news.ycombinator.com/item?id=40279632

  • 该评论指出攻击者利用 DHCP 选项 121 推送路由,对配置不当的客户端构成有效攻击。
  • 为了正确隔离封装流量与底层网络,必须使用适当的基于策略的路由。
  • 尝试通过数据包过滤器和用户空间的“杀死开关”来拼凑解决方案是有缺陷的。
  • 一些 VPN 提供商对此攻击有影响,但本质上是客户端配置不当的问题。
  • 在咖啡店、酒店、办公室等不受信任的 WiFi 网络中使用 VPN 是一种风险。
  • 在 Linux 上,可以通过将 VPN 接口放在 VRF 中来减轻这种风险。
  • 一些 VPN 提供商可能不会向学校、咖啡店等出售阻止“错误”流量的服务,这可能会悄悄扩展到其他情况。

Proton Mail discloses user data leading to arrest in Spain #

https://restoreprivacy.com/protonmail-discloses-user-data-leading-to-arrest-in-spain/

这篇文章讨论了 Proton Mail 在一起涉及西班牙当局的法律请求中的角色,导致了一名用户的身份被确认并被逮捕。Proton Mail 是一家总部位于瑞士的安全电子邮件服务,以端到端加密和严格的无日志政策而闻名。在 2021 年,Proton Mail 因遵守一项法律请求而引发争议,导致一名法国气候活动人士被捕。根据瑞士法律,Proton Mail 被迫收集并提供有关该个人 IP 地址的信息给瑞士当局,然后瑞士当局与法国警方分享了这些信息。

最近涉及西班牙警方的案件突显了隐私问题和加密通讯服务在国家安全借口下的限制,并再次将长期争议的议题置于前沿。争议的核心在于 Proton Mail 向西班牙警方提供了与使用化名“Xuxo Rondinaire”账户相关的恢复电子邮件地址。这名个人被怀疑是加泰罗尼亚警察部队 Mossos d’Esquadra 的成员,并利用他们的内部知识协助“民主海啸”运动。

西班牙当局收到 Proton Mail 提供的恢复电子邮件后,进一步要求苹果提供与该电子邮件相关的额外细节,导致了该个人的身份被确认。这一案例尤为引人关注,因为涉及跨不同司法管辖区和公司的一系列请求,突显了技术公司、用户隐私和执法机构之间复杂的相互作用。

文章还提到了 Proton Mail 去年遵守了近 6000 个数据请求,并强调了保护与各种服务共享的数据的重要性。同时,文章强调了维护严格的操作安全(OPSEC)的重要性,特别是对于关注隐私的用户。文章还提供了一些建议,如避免链接恢复电子邮件或电话号码,考虑使用次要、一次性电子邮件或虚拟电话号码,使用 VPN 服务隐藏 IP 地址等。

最后,文章指出 Proton Mail 和类似服务虽然在其电子邮件平台上提供了相当的保护和端到端加密,但并非免疫于法律和政府压力。用户必须谨慎地在安全需求与服务提供商的潜在法律义务之间取得平衡。


HN 评论 225 comments | 作者:gulced | 24 hours ago #

https://news.ycombinator.com/item?id=40280689

  • 读者对 ProtonMail 和 Apple 的数据披露存在认知差异,用户需谨慎选择信息提供给服务商的方式,以免泄露个人信息;
  • ProtonMail 曾自称为“安全和私密的电子邮件”,但实际上已多次提供数据,用户需注意服务商是否挑战数据请求;
  • 对于普通用户来说,难以理解和避免安全电子邮件/VPN/tor 的潜在问题,即使是 HN 用户也可能犯错;
  • 如果威胁模型是“利用安全电子邮件/VPN/tor 逃避执法机构的监视”,用户有责任了解所有情况和技巧;
  • 个人信息存储在第三方处,可能会受到合法传票的披露;
  • 民主自由保护人们免受不合理搜查和扣押,但法庭命令要求第三方透露客户信息并非不合理;
  • 需要设计更好的产品以降低被追踪风险;
  • 隐私和匿名性是两个紧密相关但不同的概念,隐私保护个人信息不被泄露,匿名性则是不被识别;
  • Proton Mail 在数据披露方面存在争议,用户需谨慎选择服务商;
  • 隐私和匿名性对于保护用户免受不良行为的侵害至关重要;
  • 隐私和匿名性的区别在于信息的可见性和可关联性;
  • 隐私可用于保护告密者免受国家的侵害;
  • 隐私和匿名性的重要性取决于用户的需求和情境;
  • 使用 VPN 服务时需注意支付方式是否暴露个人身份;
  • 在压迫政权下,使用 TOR 可能会暴露用户身份,建议使用匿名代理服务器;
  • 大多数 VPN 提供商声称不保留日志,但用户需谨慎选择;
  • 使用 VPN 和匿名服务时需注意保护个人身份信息。

Cold brew coffee in 3 minutes using acoustic cavitation #

https://www.unsw.edu.au/newsroom/news/2024/05/Ultrasonic_cold_brew_coffee_ready_under_three_minutes

根据 UNSW Sydney 的新闻报道,工程师们利用声波技术将制作冷萃咖啡的时间从数小时缩短至几分钟。冷萃咖啡的粉丝们通常赞扬其相比普通热萃咖啡更顺滑、更少酸味和更少苦味的口感。然而,制作冷萃咖啡通常需要 12 至 24 小时才能完全浸泡咖啡粉末,让风味慢慢在冷水中提取出来。这对于那些早晨急需咖啡因的人来说远非理想。

UNSW 的工程师们现在开发出一种新的方法,在不到三分钟内制作冷萃咖啡,就像制作普通热萃咖啡一样,而不会牺牲口感体验。这一过程涉及使用超声波反应器加速研磨咖啡豆的冷萃过程,相关研究发表在《超声声化学》杂志上。

该超声波反应器通过在 38.8 千赫频率下向其壁的多个点注入声波,产生反应器内的多个声空化区域。这种新的更快速的冷萃系统通过超声波声波从换能器经过特殊改装的喇叭作用于过滤篮中的咖啡粉末。

研究还发现,与未经声波处理的样本相比,这种设置可以使提取产量和咖啡因浓度翻倍。研究人员表示,超声波过程加速了咖啡粉的油脂、风味和香气的提取过程。

与昆士兰大学的研究人员合作,咖啡样品被送往昆士兰农业与食品联盟进行彻底的感官分析。研究结果显示,经过 1 至 3 分钟的超声波处理的样品可以产生与 24 小时冷萃咖啡相似的口感,具体取决于客户的兴趣。

这一技术不仅可以应用于咖啡制作,还可以用于茶的冲泡过程。这一突破性技术为咖啡店、餐厅甚至家庭咖啡爱好者提供了制作即时冷萃咖啡的机会,消除了大型冷萃设备和大量冷藏空间的需求。


HN 评论 208 comments | 作者:ople | 11 hours ago #

https://news.ycombinator.com/item?id=40284823

  • 有人发现很多咖啡店将热煮的冷咖啡(热煮后冷藏)作为冷萃咖啡出售,甚至那些真正冷萃的咖啡店似乎认为它必须冷饮。
  • 有人提到冷萃咖啡的酸度是否比热煮的咖啡更低。
  • 有人对加热冷萃咖啡提出疑问,认为冷萃咖啡应该是冷饮。
  • 有人提到冷萃咖啡的酸度较低,加热后口感更顺滑。
  • 有人分享了剑桥的一家咖啡店提供的“热冷萃”咖啡。
  • 有人讨论了咖啡酸度与服务温度的关系。
  • 有人提到冷萃咖啡的制作方法和设备。
  • 有人分享了自制冷萃咖啡的经验。
  • 有人讨论了冷萃咖啡的酸度问题。
  • 有人分享了对冷萃咖啡的喜好。

Pyspread – Pythonic Spreadsheet #

https://pyspread.gitlab.io/

https://pyspread.gitlab.io/ 是一个非传统的基于 Python 编程语言编写的电子表格应用程序。pyspread 的目标是成为最符合 Python 风格的电子表格应用。在 pyspread 中,每个单元格都期望包含 Python 表达式,这使得电子表格特定的语言变得过时。每个单元格返回一个 Python 对象,可以从其他单元格访问。这些对象可以表示任何内容,包括列表或矩阵。

pyspread 是自由软件,根据 GPL v3 许可证发布。最新版本是 pyspread v2.2.3(源代码),需要 Python 3.6+。最后一个与 Python 2.x 兼容的(已过时)版本是 pyspread v1.1.3。

主要特点包括:

  • 单元格接受 Python 代码并返回 Python 对象
  • 可从单元格内访问 Python 模块,包括 NumPy 等
  • 支持导入 CSV、SVG 文件,导出 CSV、SVG、PDF 文件
  • 单元格可以显示文本、标记、图像、日期或图表
  • 支持 Matplotlib 和 R 图表,通过对话框支持 Plotnine 和 R 包图形、lattice、ggplot2
  • 拼写检查功能
  • 基于 git 的 pysu 保存文件格式
  • 基于 blake2b 的保存文件签名,防止外部代码执行

目标用户群体是有 Python 编程经验或想学习 Python 编程语言的用户,如研究工程师 Clara 和商业决策者 Peter。不在目标用户群体中的用户包括寻找免费替代品的 Donna 和寻找可以并行计算的 Jack。

总体而言,pyspread 提供了一种使用 Python 代码进行电子表格操作的新颖方式,适合有 Python 编程经验的用户。


HN 评论 95 comments | 作者:Qem | 12 hours ago #

https://news.ycombinator.com/item?id=40284219

  • 评论中有人赞扬首页上的“目标用户群”部分,认为这种信息对于决定是否使用或建议应用程序至关重要。
  • 有人认为开发者应该至少向自己承认这一点,成为所有人的一切是开源项目直接走向疲劳的路线。
  • 评论指出,尽管应用的目标用户群可能在 macOS 上,但该应用程序却不可用。
  • 有人提出希望看到一个集合所有最佳替代软件的发行版,例如用于电子表格的 pyspread,用于文字处理的 LyX,用于 3D 建模的 OpenSCAD 等。
  • 其他评论提到了针对不同任务的类似软件的建议,如 KiCad 用于电子开发,Blender 用于 3D 图形等。
  • 评论中还涉及到关于不同软件的功能和适用性的讨论,如 Gimp 适合图像处理而非照片编辑,以及 Krita 适合数字插图等。
  • 还有人提到了绘图软件 drawio,以及关于软件分发的讨论,包括使用 Arch/Gentoo 进行安装等。
  • 评论中还涉及到软件安装和管理的讨论,包括使用 pipx 进行应用程序安装,以及关于 Python 包管理的不同解决方案的讨论。

Vets fret as private equity snaps up clinics, pet care companies #

https://stateline.org/2024/03/29/vets-fret-as-private-equity-snaps-up-clinics-pet-care-companies/

这篇文章讨论了私募股权公司收购兽医诊所和宠物护理公司对兽医行业带来的影响。

文章提到,一些兽医和倡导者担心私募股权公司进入宠物医疗保健行业可能会导致类似的结果,包括提高价格、削减服务和关闭诊所以最大化股东利润。一些州已经制定法律禁止非兽医拥有兽医诊所,一些消费者倡导者希望各州审查该行业的大规模收购。

私募股权公司已在过去几年投资了数十亿美元用于兽医诊所、特殊动物医院、宠物保险服务和宠物食品公司。文章还提到了私募股权公司的投资有助于提高诊所和其他提供者购买更好技术的资本,并提高效率。然而,一些兽医表示私募股权公司的压力影响了患者和宠物主人,可能导致推销不必要的服务或匆忙的就诊体验。

一些州已经采取行动,要求官员或机构审查该行业的大规模合并和收购,以保护消费者。文章最后提到,预计随着更多公司收购兽医诊所以及宠物护理领域的其他企业,兽医护理行业将进一步实现公司化。


HN 评论 218 comments | 作者:mooreds | 22 hours ago #

https://news.ycombinator.com/item?id=40281274

  • 私募股权对于除了少数几位普通合伙人之外的每个人来说都像是有毒的毒药,从工人那里抽取钱财,导致现金流向统治阶级。
  • VC 已经正确地识别出这不仅是一个人们愿意基于情感支付很多钱的领域,而且也受到足够监管,使得他们购买现有实践的策略让他们相当安全,不受很多竞争的影响。
  • 当地的答案是,那些可以开设竞争性实践的人被限制在非竞争协议下,如果他们离开 PE 拥有的地方。

How Python asyncio works: recreating it from scratch #

https://jacobpadilla.com/articles/recreating-asyncio

这篇文章是由 Jacob Padilla 撰写的,主要介绍了如何通过使用 Python 生成器和__await__方法从头开始重新创建 asyncio,以便更好地理解 asyncio 的工作原理。

文章首先回顾了生成器的概念,解释了生成器如何使代码更加内存高效,并介绍了生成器函数的工作原理以及 yield 语句的作用。接着讲解了事件循环的概念,事件循环是 asyncio 的核心,负责管理当前所有任务的运行。

作者通过示例代码演示了如何使用生成器来模拟事件循环的运行过程,以及如何通过 yield from 实现子生成器的调用。然后,文章介绍了如何将代码从使用 yield 转换为使用 await,并创建了自定义的 Task 类来管理任务的执行。

最后,作者展示了如何使用 async 和 await 关键字来重构代码,实现类似 asyncio 的功能,并最终将代码迁移到真正的 asyncio 包中。整篇文章通过简单的示例代码,帮助读者逐步理解 asyncio 的核心原理和工作流程。


HN 评论 37 comments | 作者:jpjacobpadilla | 22 hours ago #

https://news.ycombinator.com/item?id=40281139

  • 有评论指出 Python asyncio 中存在"busy wait"问题,建议通过跟踪任务的下一个可运行时间来解决,避免事件循环无谓运行。
  • 另一观点提到在 asyncio 中可以使用自定义事件循环实现,例如 uvloop,利用 libuv 处理类似 select 的操作。
  • 有人提到在编写玩具循环时,可以让事件循环只运行主程序,避免繁忙等待或与事件循环的角度无关的操作。
  • 一位评论问到学习此类内容的最佳书籍。
  • 有人指出 Python 中阻塞 asyncio 线程的常见问题,建议引入静态分析工具来检测阻塞调用。
  • 有评论提到使用 async def 修复了一些 Python 函数定义的问题,但整体情况仍有待改进。
  • 一些评论讨论了 Python 中的线程处理方式,以及对异步功能的看法,认为 Python 社区对线程有强烈恐惧和厌恶。