鱼C论坛

 找回密码
 立即注册
查看: 2016|回复: 0

[作品展示] 多线程模拟红绿灯

[复制链接]
发表于 2021-3-25 17:22:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import threading
import time

event=threading.Event()  #声明事件

def liger():
    count=0
    event.set()     #设置标志位,默认为绿灯
    while True:
        if count in range(6,10):        #清除标志,改红灯
            event.clear()
            print("\033[41;1mred light is on...\033[0m")
        elif count>10:                  #改绿灯
            event.set()
            count=0
        else:
            print("\033[42;1mgreen light is on...\033[0m")
        time.sleep(1)
        count+=1

def car(name):
    while True:
        if event.set():      #判定是否标志,绿灯
            print("[%s] running..." % name)
            time.sleep(1)
        else:
            print("[%s] sees red light , waiting..." % name)
            event.wait()  # 标志位没设,就卡住,设置了就执行(等待标志位被设定)
            print("\033[34;1m[%s] green light is on ,start going...\033[0m" % name)




if __name__ == '__main__':
    light=threading.Thread(target=liger)
    car=threading.Thread(target=car,args=("小车",))

    light.start()
    car.start()
微信截图_20210325171932.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 07:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表