python线程之condition
Posted 扫驴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python线程之condition相关的知识,希望对你有一定的参考价值。
cond = threading.Condition()
# 类似lock.acquire()
cond.acquire()
# 类似lock.release()
cond.release()
# 等待指定触发,同时会释放对锁的获取,直到被notify才重新占有琐。
cond.wait()
# 发送指定,触发执行
cond.notify()
import threading,time cond = threading.Condition() #cond.acquire() #cond.release() #cond.wait() #cond.notify() def aa(): print (‘thread_aa get‘) cond.acquire() time.sleep(5) print (‘thread_aa finished first job‘) cond.wait()#释放对锁的控制,好让别的进程acquire到 #同时阻塞在此,等待得到锁的那个进程的先cond.notify后(cond.wait或cond.release) print (‘thread_aa get again‘) time.sleep(5) print (‘thread_aa finished all work‘) cond.notify()#告诉刚才释放锁的那个进程等通知吧,等我要么wait要么release cond.release()#释放锁 def bb(): cond.acquire() print (‘thread_bb get‘) cond.notify()#告诉刚才释放锁的那个进程等通知吧,等我要么wait要么release print (‘依然是我bb在运行‘) time.sleep(5) print (‘thread_bb finished first job‘) cond.wait()#释放对锁的控制,而后被阻塞的aa就可以执行了 #同时阻塞在此,等待得到锁的aa的先cond.notify后(cond.wait或cond.release) print (‘thread_aa get again‘) print (‘thread_bb finished all works‘) cond.release() a=threading.Thread(target=aa) a.start() time.sleep(2) b=threading.Thread(target=bb) b.start()
以上是关于python线程之condition的主要内容,如果未能解决你的问题,请参考以下文章
python笔记11-多线程之Condition(条件变量)