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

    1、概念

    信号量和锁相似,锁同一时间只允许一个对象(进程)通过,信号量同一时间允许多个对象(进程)通过

    2、应用场景

    多线程,并规定数量

    3、格式:

      导入信号量模块

      实例化信号量对象,可以规定信号量的个数

      传递对象

      拿到一把钥匙

      释放一把钥匙

    4、过程

      获得钥匙,当钥匙串没钥匙时,其它进程要在外面等候,当释放一把钥匙时,一个进程进入

    """
    一个房间一次只允许两个人通过
    若不使用信号量,会造成所有人都进入这个房子
    若只允许一人通过可以用锁-Lock()
    """
    import time
    import random
    from multiprocessing import Process
    from multiprocessing import Semaphore
    
    
    def home(name, se):
        se.acquire()  # 拿到一把钥匙
        print('%s进入了房间' % name)
        time.sleep(random.randint(1, 5))
        print('******************%s走出来房间' % name)
        se.release()  # 还回一把钥匙
    
    
    if __name__ == '__main__':
        se = Semaphore(2)       # 创建信号量的对象,有两把钥匙
        for i in range(7):
            p = Process(target=home, args=('tom{}'.format(i), se))
            p.start()
    """
    结果:
    tom0进入了房间
    tom1进入了房间
    ******************tom0走出来房间
    tom2进入了房间
    ******************tom1走出来房间
    tom3进入了房间
    ******************tom2走出来房间
    tom4进入了房间
    ******************tom3走出来房间
    tom5进入了房间
    ******************tom4走出来房间
    tom6进入了房间
    ******************tom5走出来房间
    ******************tom6走出来房间
    """
  • 相关阅读:
    WSS基础
    SPCAMLEditor1.0 publish
    关于代码调用SSP获取UserProfile出错的解决方案
    WSS Alert(邮件提醒) 定制
    MOSS字段编辑权限控制方案发布源码
    ListViewWebPart Code
    再议WSS RenderingTemplate
    Windows SharePoint Services Search和Office SharePoint Server Search的区别
    MOSS信息管理策略定制(MOSS custom policies)
    发布一个小工具SPCamlEditor
  • 原文地址:https://www.cnblogs.com/wt7018/p/11055247.html
Copyright © 2011-2022 走看看