返回首页

一周热榜

1作者: anonyxbiz6 天前原帖
我一直在开发一个 Python 异步库([Blazeio](https://github.com/anonyxbiz/Blazeio)),并偶然发现了一种令人震惊的简单优化,使得 `asyncio.Event` 看起来像是一个过时的产物。 ### *问题* `asyncio.Event`(以及其他语言中的类似结构)存在两个严重的扩展缺陷: 1. *内存*:它为每个等待者分配<i>一个未来对象</i> → 1M 等待者 = 浪费 48MB 内存。 2. *延迟*:它以<i>逐个唤醒</i>的方式唤醒等待者 - 在全局解释器锁(GIL)下的系统调用复杂度为 O(N)。 ### *解决方案:`SharpEvent`* 一个可直接替换的方案: - *为所有等待者使用一个共享的未来对象* - *O(1) 内存*。 - *在单个操作中唤醒所有等待者* - *O(1) 延迟*。 ### *基准测试* | 指标 | `asyncio.Event` | `SharpEvent` | |--------------|-----------------|--------------| | 1K 等待者 | ~1ms 唤醒 | *~1µs* | | 1M 等待者 | *崩溃* | *仍然 ~1µs* | | 内存 (1M) | 48MB | *48 字节* | ### *为什么这很重要* - *实时应用*(WebSockets、游戏)获得了*可预测的延迟*。 - *高并发*(物联网、交易)变得简单。 - 它是*纯 Python*,但性能超过了 CPython 的 C 实现。 ### *没有缺点?* 几乎没有。如果你需要每个等待者的超时/取消功能,你需要一个包装器,但 99% 的使用场景只需要批量唤醒。 ### *试试吧* ```python from Blazeio import SharpEvent event = SharpEvent() event.set() # 立即唤醒所有等待者 ``` [GitHub](https://github.com/anonyxbiz/Blazeio) <i>欢迎反馈,我是否遗漏了关键的使用场景?</i>
1作者: priyankc6 天前原帖
嗨,HN!<p>我们受到Claude Code的启发,开发了一款可以进行故障根本原因分析的工具。在我们的经验中,编写代码只是解决故障的冰山一角。它涉及到筛选日志、建立心理模型、重现故障以及真正理解根本原因的工作。<p>我们开始在开源的GitHub仓库中使用自己的工具。我们处理了一些问题,并能够迅速找到根本原因。<p>以下是我们在过去24小时内进行的一些根本原因分析:<p>- Parabol仓库中的问题: <a href="https://github.com/ParabolInc/parabol/issues/11258#issuecomment-2861817806">https://github.com/ParabolInc/parabol/issues/11258#issuecomm...</a><p>- Puppet Bolt仓库中的问题: <a href="https://github.com/puppetlabs/bolt/issues/3373#issuecomment-2863968154">https://github.com/puppetlabs/bolt/issues/3373#issuecomment-...</a><p>- InfluxDB仓库中的问题: <a href="https://gist.github.com/priyankc/0e90fce913116b9014142f96a877273e" rel="nofollow">https://gist.github.com/priyankc/0e90fce913116b9014142f96a87...</a><p>我们非常希望听到您的反馈,尤其是批评意见。<p>安装说明和更多信息请访问: <a href="https://hyperdrive.engineering/" rel="nofollow">https://hyperdrive.engineering/</a><p>祝您构建愉快!