Python的线程13 简易限流器实现

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

前篇学委提出了Semaphore信号量来制作限流器的思路

简单总结就是:动态的release,保证任意时刻都有固定数量可用的信号量。

我们通常会这样使用信号量

xuewei_semaphore = threading.Semaphore(4) #申请信号量

#在某个地方使用信号量
xuewei_semaphore.acquire()

//do something here
....

xuewei_semaphore.release()

限流的过程其实就是不断的使用这个有限信号量的过程。

因为设置了4信号额度,最多允许4个线程同时运行。

任意时间只要获取超过4个后,其他线程只能等待,这就跟我们进站排队很像。安检人员看到进入排队的人太多的,把后面的拦住,知道等候的人数减少,再放行一些人员进入车站等候区。

直接上代码吧,后面再解释。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/27 10:43 下午
# @Author : LeiXueWei
# @优快云/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : threading_semephore.py
# @Project : hello
import threading
import time
import queue

xuewei_semaphore = threading.Semaphore
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

雷学委

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

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

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

打赏作者

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

抵扣说明:

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

余额充值