zoukankan      html  css  js  c++  java
  • python 装饰器小技巧(一) 信号量控制

    #装饰器小技巧一信号量控制
    import threading, time
    NUM = 10
    
    # 定义信号量控制
    def synchronized(func):
        func.__sem__ = threading.Semaphore(value=NUM)
        print(func.__sem__)
        def wraper(*args, **kwargs):
            #支持上下文
            with func.__sem__:
                return func(*args, **kwargs)
    
        return wraper
    #测试函数
    @synchronized
    def test(index):
        #模拟耗时
        print('%d threadId:%d waiting' % (index, threading.current_thread().ident))
        time.sleep(2)
        print('%d threadId:%d leave' % (index, threading.current_thread().ident))
    #开启一百线程
    for t in range(100):
        t1 = threading.Thread(target=test, args=(t,))
        t1.start()
    #同样的还支持Lock 互斥锁
  • 相关阅读:
    第二章.md
    第四章.md
    第一章.md
    第九章.md
    png简析.md
    第五章.md
    好看的粒子效果
    缓动 减速运动
    收集的小效果
    粒子效果2
  • 原文地址:https://www.cnblogs.com/alplf123/p/8532605.html
Copyright © 2011-2022 走看看