正式的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