zoukankan      html  css  js  c++  java
  • python 线程锁 -4

    from atexit import register
    from random import randrange
    from threading import Thread, currentThread, Lock, current_thread, active_count
    from time import ctime, sleep
    
    
    class CleanOutputSet(set):
        def __str__(self):
            return ', '.join(x for x in self)
    
    
    loops = (randrange(2, 5) for x in range(randrange(3, 7)))
    lock = Lock()
    remaining = CleanOutputSet()
    
    
    def loop(nsec):
        myname = current_thread().name
        # lock.acquire()  # 加锁
        with lock:
            remaining.add(myname)
            print('[%s] Started %s' % (ctime(), myname))
            sleep(nsec)
            remaining.remove(myname)
            print('[%s] Completed %s (%d sece)' % (ctime(), myname, nsec))
            print('(remaining: %s)' % (remaining or 'NONE'))
        # lock.release()
    
    
    def main():
        for pause in loops:
            Thread(target=loop, args=(pause,)).start()
            print(pause, 'aaa')
    
    # 程序结束之前调用, exit() 方法调用之前
    @register
    def _atexit():
        print(active_count())  # 当前线程数
        print('all DONE at:', ctime())
    
    
    main()
    

      

  • 相关阅读:
    oracle 查看表空间使用率
    解决linux下vim中文乱码问题
    linux 时间同步
    oracle ho与mysql system命令
    mysql 重置root密码
    2020 10 26
    2020 10 24
    2020 10 23
    2020 10 22
    2020 10 21
  • 原文地址:https://www.cnblogs.com/412013cl/p/10217916.html
Copyright © 2011-2022 走看看