编程并发

发布: (2026年3月24日 GMT+8 01:26)
5 分钟阅读
原文: Dev.to

Source: Dev.to

介绍

Programing Concurrency 的封面图片

每个有经验的程序员都知道并发是一把双刃剑。它是优先级、样板代码和各种模型之间的平衡艺术。但我们仍然忍受它,因为我们知道它为何重要

当你开始在任何语言中测量并发时,最显著的变化是并行性——操作开始同时进行的效果。

例如:想象一个拥有 16 个耗时操作的应用。如果每个操作需要 1 秒才能运行,同步执行会迫使用户等待 16 秒。在一颗 16 核 CPU 上,完美的并发模型可以在仅 1 秒内完成所有操作。现实中你很少能实现每核 1 对 1 的完美扩展,但良好的并发可以让你接近这种效果。

收益显而易见,代价是复杂性。突然之间,你的逻辑被锁定在一个严格的时序系统中。你不再只是编写函数,而是要管理竞争。你必须手动确保线程不会争夺资源或破坏状态。I/O 操作需要完全不同的锁策略。

一旦你意识到安全线程的要求,它就会侵蚀你原本想用来实际构建功能的时间。并发逻辑直接侵入你的业务逻辑,干扰干净的函数,充斥着锁和信号量,直到你开始怀疑:“我为什么要使用线程?”

介绍 Py‑TokenGate

我想要线程的性能收益,却不想承担手动资源保护的思维负担,也不想仅仅为了并行而重写同步逻辑。

TokenGate 是一种基于令牌管理的并发实验。你不需要在函数内部手动管理锁,只需给函数加上装饰器。

@task_token_guard(operation_type='prime_check', tags={'weight': 'medium'})
def prime_operation(n):
    """Check if the number is prime (moderate complexity)."""
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

通过使用 @task_token_guard,你定义任务的权重,让 OperationsCoordinator 负责流量控制。它将任务划分到不同的通道,并通过令牌将它们引导到工作者的邮箱中。

它并不是解决所有竞争条件的灵丹妙药,但它有效地消除了标准并发工作流中的样板代码。

在此处查看:

TokenGate

它是什么

一个小型实验系统,用于通过令牌管理的并发模型路由被装饰的同步函数。它旨在作为独立的并发工作流运行,而不是与常规线程模式并存。

它不是

它并非作为生产代码呈现。

概览

TokenGate 探索了令牌管理的并发概念:一种以结构化方式协调 async 编排与基于线程的工作的方法。此仓库是概念验证,而非完整产品。它仍在实验阶段,持续演进,并以探索精神共享。

如果你想了解更完整的概览,请从这里开始:

如果这里的任何内容对你有用、有趣或激发了灵感,那已经足以让这个项目值得存在。

如何使用(两种版本,两种装饰器)

注意:不要尝试装饰 async 函数。

令牌装饰器使用 asyncio,但被装饰的函数本身应当是同步的…

0 浏览
Back to Blog

相关文章

阅读更多 »

Rob Pike 的5条编程规则

规则 1:你无法判断程序会把时间花在哪里。瓶颈往往出现在意想不到的地方,所以不要事后猜测并加入 speed hack……