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()
    

      

  • 相关阅读:
    CF Round 594
    [转载]CSP-J/S 第一轮知识点选讲
    10.17 模拟赛
    10.16 模拟赛
    10.15模拟赛
    10.14模拟赛
    10.12 模拟赛
    Peaks Gym 100365H
    手写Bitset优化
    Sums gym100753M
  • 原文地址:https://www.cnblogs.com/412013cl/p/10217916.html
Copyright © 2011-2022 走看看