zoukankan      html  css  js  c++  java
  • 7.3.8.1

    一 信号量

    信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行,如果说互斥锁是合租房一个们,每次只能出去一个人,那么信号量就相当于一群路人去争取合租房的多个们出去,合租房有多少个门,这意味着同一时间可以有多个人出去,但合租房的出去的门是一定的,这们多少是信号量。

    from threading import Thread,Semaphore
    import threading
    import time
    
    def func():
        sm.acquire()
        print('%s get sm' %threading.current_thread().getName())
        time.sleep(3)
        sm.release()
    
    if __name__ == '__main__':
        sm=Semaphore(5)  #定义信号量大小,同时有5人抢占
        for i in range(23):
            t=Thread(target=func)
            t.start()
    信号量
    Thread-1 get sm
    Thread-2 get sm
    Thread-3 get sm
    Thread-4 get sm
    Thread-5 get sm
    
    
    
    Thread-6 get sm
    Thread-7 get sm
    Thread-8 get sm
    Thread-9 get sm
    Thread-10 get sm
    
    
    Thread-11 get sm
    Thread-12 get sm
    Thread-13 get sm
    Thread-14 get sm
    Thread-15 get sm
    
    
    Thread-16 get sm
    Thread-17 get sm
    Thread-18 get sm
    Thread-19 get sm
    Thread-20 get sm
    
    
    Thread-22 get sm
    Thread-23 get sm
    Thread-21 get sm
    运行结果(暂停时候,我加了换行符)
  • 相关阅读:
    Eclipse中创建新的Spring Boot项目
    解决win下无法ping通VM虚拟机CentOS系统的方法
    32位centos下安装jdk1.7报Permission denied处理方式
    Windows下安装HBase
    15个nosql数据库
    查看软件的安装路径
    IP地址 网段的划分
    签名算法
    CentOS开启FTP及配置用户
    CentOS 5.5安装SVN(Subversion)
  • 原文地址:https://www.cnblogs.com/caimengzhi/p/8523438.html
Copyright © 2011-2022 走看看