import threading
import time
# python 实现线程同步:Event、(R)Lock、semaphore、barricade、condition
# Event 使用:e.set() e.clear() e.is_set() e.wait()
def event_usage(): # 主要就set设置event为True,clear变false,wait 用于等待True,is_set来判断是否为True
l = []
e = threading.Event()
def pro():
while True:
l.append(1)
print('adding ', l)
time.sleep(1)
if len(l) == 5:
print(l)
e.set() # set之后Event 为True,可以让另一个线程使用
def con():
while True:
e.wait() # 先等待Event 变成True
print('grab all ~~')
l.clear()
e.clear() # 完成之后用clear再把event 变成False ,继续等待adding
p = threading.Thread(target=pro)
c = threading.Thread(target=con)
p.start()
c.start()
# Lock的使用: acquire 默认blocking=True,timeout=-1 上锁,不能用 。 使用release 释放就能使用
# 注意
python中多线程同步实现
最新推荐文章于 2024-02-04 10:55:45 发布