首页 > 编程语言 > 详细

Python入门学习笔记14(多线程event)

时间:2018-08-02 20:26:58      阅读:147      评论:0      收藏:0      [点我收藏+]

event

event可以理解为一个标志位,运用于多线程之间的交互。
当设置了event,wait可以通过,
当没有设置event,wait阻塞

一个简单的红灯停绿灯行的程序:

import threading
import time

event = threading.Event()

mutex = threading.Lock()

#红绿灯
def light():
    counter = 1
    while True:
        #不加锁的话不同线程的输出有时会打印在同一行上
        mutex.acquire()
        if counter <= 5:
            event.set()
            counter+=1
            print("绿灯")
            mutex.release()
            time.sleep(1)
        elif counter > 5 and counter <= 20:
            event.clear()
            counter+=1
            print("红灯")
            mutex.release()
            time.sleep(1)
        else:
            counter = 1
            mutex.release()

def car(name):
    while True:
        mutex.acquire()
        if event.is_set():
            print("car%d通过" %name)
            mutex.release()
            time.sleep(2)
        else:
            print("car%d等绿灯" %name)
            mutex.release()
            event.wait()


l = threading.Thread(target = light)
l.start()

for i in range(5):
    c = threading.Thread(target= car,args = (i,))
    c.start()

  

Python入门学习笔记14(多线程event)

原文:https://www.cnblogs.com/Hexdecimal/p/9409227.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!