Python的线程12 简易限流器

本文介绍了限流器的概念及其在程序中的应用,通过类比地铁高峰期的限流措施,解释了如何使用Semaphore信号量来实现限流器,并确保任意时刻只有最大限额数量的线程同时执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正式的Python专栏第49篇,同学站住,别错过这个从0开始的文章!

前篇学委展示了Semaphore信号量,这个工具可以让开发者设置阀值,简单的控制并发的数量。

不知道读者还记得前篇设置信号量为1的时候,三个运动员只有一个先跑了。

因为一开始给了信号量为1,所以学委还没有喊完3/2/1,就有人抢跑了。

好,拉回主题 - 限流器

什么是限流器?

大家记不记得经常坐地铁(早晚)高峰期的时候,在入口的地方就有工作人员搬了一下遮挡栏,

每次就放而二三十人进入。一般4个地铁口,两个入。两个出,出口一般没有限流,除了那种对接客运站的出口,会有限流。

限流器,就是类似的概念,程序实现这样的一个遮挡栏,实现这样的定期的放入定额数量的人员执行任务。

翻译成技术话语,那就是,一个管理机制,保证了任意时间只有最大限额数量的线程,同时做事情。

这就是限流器。

另外,我们接触的软件,其实都是生活的映射。

怎么做限流器呢?

本篇说了信号量,那么我们就用它来做吧。

信号量保证了限定数额的线程,但是它是一次性的啊。

比如下面的缺陷:

threading.Semaphore(3) #运行3个线程同时acquire不阻塞,如果有4个线程acquire将有一个线程等待。

恰好,它还给我们提供了release函数。

所以我们只要知道限额生成信号量初始值,然后在程序中不断release,这样信号量就恢复。

等候的其他线程又能获得锁,执行自己的任务了。

问题不就迎刃而解了吗?

总结

先卖个关子。下篇学委会展示怎么做的代码。

编程还是挺好玩的。 喜欢Python的朋友,请关注学委的 Python基础专栏 or Python入门到精通大专栏

持续学习持续开发,我是雷学委!
编程很有趣,关键是把技术搞透彻讲明白。
欢迎关注微信,点赞支持收藏!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷学委

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值