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异常
  • 相关阅读:
    CMS、G1收集器
    一文入门Redis
    一文解析TCP/UDP
    ubuntu官方源
    一、单体架构分析
    netty简介2
    netty简介
    安装vmware tool
    jdk1.8安装(转载)
    HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
  • 原文地址:https://www.cnblogs.com/anhao-world/p/13669808.html
Copyright © 2011-2022 走看看