zoukankan      html  css  js  c++  java
  • python信号量

    同进程的一样

    Semaphore管理一个内置的计数器,
    每当调用acquire()时内置计数器-1;
    调用release() 时内置计数器+1;
    计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。

    实例:(同时只有5个线程可以获得semaphore,即可以限制最大连接数为5):

     1 from threading import Thread,Semaphore
     2 import threading
     3 import time
     4 # def func():
     5 #     if sm.acquire():
     6 #         print (threading.currentThread().getName() + ' get semaphore')
     7 #         time.sleep(2)
     8 #         sm.release()
     9 def func():
    10     sm.acquire()
    11     print('%s get sm' %threading.current_thread().getName())
    12     time.sleep(3)
    13     sm.release()
    14 if __name__ == '__main__':
    15     sm=Semaphore(5)
    16     for i in range(23):
    17         t=Thread(target=func)
    18         t.start()
    19 
    20 实例
    与进程池是完全不同的概念,进程池Pool(4),最大只能产生4个进程,而且从头到尾都只是这四个进程,不会产生新的,而信号量是产生一堆线程/进程
  • 相关阅读:
    Aop——面向切面编程
    认识界上最流行的Api框架——swagger
    手把手SSM框架实战
    面试题
    重新拾起JavaSE的日子
    使用IntelliJ IDEA创建第一个Maven项目
    Java面试必考题
    Vue项目——去哪网(首页部分)
    Vue项目的准备
    vue.js ③
  • 原文地址:https://www.cnblogs.com/frank007/p/9936699.html
Copyright © 2011-2022 走看看