Python中使用线程锁

import _thread
from time import ctime, sleep

loops = [4,2] #将休眠时间先放在这个列表里面备用

def loop(nloop, nsec, lock): #三个参数 nloop:线程编号  nsec:休眠时间  lock线程锁
    print("Start loop", nloop ,"at: ",ctime())
    sleep(nsec)
    print("loop",nloop,'done at: ',ctime())
    lock.release() #释放线程的锁

def main():
    print("Starting at:",ctime())
    locks = [] #创建空列表,通过_thread.allocate_lock()得到锁的对象
    nloops = range(len(loops)) #读取loops列表的范围
    for i in nloops:
            lock = _thread.allocate_lock()
            lock.acquire() #取得每个锁,将线程锁上
            locks.append(lock) #在locks列表里添加进锁的对象
    for i in nloops:
        _thread.start_new_thread(loop,(i,loops[i],locks[i])) #创建新的线程,并且调用loop方法
    for i in nloops:
        while locks[i].locked(): #当锁锁起来时,不做操作
pass
    print('All done at: ',ctime()) #打印出所有线程结束时间

if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/qq_37504771/article/details/80740136
今日推荐