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

    import threading,time

    def run(n):
    lock.acquire()#获取锁
    global number
    number +=1
    lock.release()#释放锁
    time.sleep(1)#加在释放前会要50秒
    lock = threading.Lock()#实例
    number =0
    time_now = time.time()
    re_date =[]
    for i in range(50):
    t1 = threading.Thread(target=run,args=(i,))#生成一个线程实例
    t1.start()#启动线程
    re_date.append(t1)
    for t in re_date:
    t.join()#等于wait()一个线程执行完之后才执行另一个线程

    print('done...')
    print("number:",number)
    print(time.time()-time_now)#50个线程总共花了多少时间



    注释:
    acquire:获取锁,阻止或非阻止如果blocking为True,则当前线程会堵塞,直到获取到这个锁为止(如果没有指定,则默认为True)。如果blocking为False,则当前线程不会阻塞。
    在浮点型timeout参数设置为正值的情况下调用时,只要无法获取锁,将最多阻塞timeout指定的秒数。timeout参数被设置为-1时将无限的等待。当blocking为False时,timeout指定的值
    将被忽略。如果成功获取锁,则返回Ture,否则返回False(例如,超时到期)
    release()释放一个锁,这可以从任何线程调用,而不仅仅是已获得锁的线程。当锁被锁定时,将其重置为解锁状态并返回。如果阻止任何其他线程等待锁解锁,则只允许其中一个继续执行。在unlocked
    锁上调用时,会引发RuntimeError异常
  • 相关阅读:
    (转)静态方法与实例方法
    使用C#和Excel进行报表开发(8)
    js千分位
    各种语言多态性比较
    中国互联网100个Web2.0网站名单
    HDU4405 期望
    HDU1266 字符串逆转
    POJ1087 DInic
    POJ1003 水~
    HDU4403 DFS
  • 原文地址:https://www.cnblogs.com/anhao-world/p/13669808.html
Copyright © 2011-2022 走看看