import threading, time
sem = threading.Semaphore(3)
def run():
event = threading.Event()
def fun():
for i in range(5):
#阻塞,等待事件触发
event.wait()
#重置
event.clear()
print("Hello world")
t = threading.Thread(target=fun).start()
return event
if __name__=="__main__":
e = run()
for i in range(5):
e.set() #触发
time.sleep(2)
生产者与消费者
import threading, queue, time, random
#生产者
def producer(q, i):
while True:
data = random.randint(0, 100)
q.put(data)
print("product %s to %s" %(i, data))
time.sleep(2)
#任务结束
q.task_done()
#消费者
def consumer(q, id):
while True:
item = q.get()
if item is None:
break
print("consume %d %d" % (id, item))
if __name__ == "__main__":
#消息列队
q = queue.Queue()
#启动生产者
for i in range(4):
threading.Thread(target=producer, args=(q, i)).start()
#启动消费者
for i in range(4):
threading.Thread(target=consumer, args=(q, i)).start()