python 流量控制,

  python 流量控制,

  大家好,本文主要说一下Python的简单限流器的介绍。有兴趣的同学过来看看,如果对你有帮助记得收藏。

  简单的结论是:动态释放保证了固定数量的信号量随时可用。

  我们通常使用这样的信号量。

  xueei _ semaphore=threading . semaphore(4)#申请信号量

  #在某处使用信号量

  韦雪_信号获取()

  //在这里做点什么

  .

  韦雪_semaphore.release()

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

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

  任何时候只要得到4以上,其他线程就只能等待,和排队等待很像。安检人员看到排队的人太多,就把后面的人拦下来,直到候车的人减少了,再让一部分人进入车站的候车区。

  

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

  #!/usr/bin/env python

  # -*-编码: utf-8 -*-

  # @Time : 2021/11/27下午10:43

  # @作者:雷雪薇

  # @ CSDN/金爵/微信:雷韦雪

  # @XueWeiTag: CodingDemo

  # @ File : threading _ seme phore . py

  # @项目:你好

  导入线程

  导入时间

  导入队列

  韦雪信号=线程。旗语(4)

  打印(韦雪信号: ,韦雪信号)

  waiting _ for _ train={ value : 0 }

  定义运行():

  new _ joiner=threading . current _ thread()。名字

  # print( %s ready %new_joiner)

  韦雪_信号获取()

  打印( %s go % new_joiner)

  等待火车[值]=1

  时间.睡眠(1)

  print( %s已完成 % threading.current_thread()。姓名)

  韦雪_semaphore.release()

  等待火车[值] -=1

  定义日志_等待_区域_状态():

  而True:

  时间.睡眠(0.5)

  name=threading.current_thread()。名字

  print(name %s - size %s % (name,waiting_for_train[value]))

  q_watcher=线程。线程(name=等待区域,target=log _ the _ waiting _ area _ status)

  q_watcher.start()

  线程=[]

  对于范围(100):内的I

  t_name=t- str(i)

  t=螺纹。线程(名称=t_name,目标=run)

  threads.append

  启动()

  对于线程:中的测试

  t.join()

  这里我们申请了4个信号量的空槽。

  然后启动100个线程,不断获取信号量,完成后再释放。

  同时,我们有一个缓冲队列,只存储新进站.的当前人数

  通过打印这个waiting_for_train的状态,我们可以看到任何时候都只有4个人在排队。

  不超过四个。

  

运行效果

  在运行过程中,我们发现队列的大小总是4。

  最后,进站的人都上车了,候车的人也清场了。

  这里总共有102个线程,一个主线程,一个等待区状态显示线程,另外还有一百个线程,代表100个入站人员。

  Semaphore初始化四个度量,所以每次可以停下来等待的人最多只有四个。

  就像地铁站一样。

  我们也可以尝试把入站处理的代码修改成下面的代码,读者可以自己运行看看效果。

  韦雪_信号获取()

  打印( %s go % new_joiner)

  等待火车[值]=1

  时间.睡眠(1)

  等待火车[值] -=1

  print( %s已完成 % threading.current_thread()。姓名)

  韦雪_semaphore.release()

  

总结

  好了,这个限流器很简单,匹配在这个中间编程里简单介绍一下。

  读者可以复制代码,运行几次,思考一下。

  关于Python的简单限流器介绍的这篇文章就到这里了。关于Python限流器的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: