红绿灯的Python模拟可以通过使用`threading`模块中的`Event`对象来实现。下面是一个简单的红绿灯模拟程序示例:
```python
import threading
import time
创建一个Event对象来控制红绿灯状态
event = threading.Event()
定义一个函数来模拟红绿灯的变化
def light():
while True:
等待事件被设置
event.wait()
红灯亮起
print("\033[41m--red light on--\033[0m")
等待一段时间
time.sleep(5)
黄灯亮起
event.clear()
print("\033[43m--yellow light on --\033[0m")
等待一段时间
time.sleep(2)
绿灯亮起
event.set()
print("\033[42m--green light on--\033[0m")
启动红绿灯线程
traffic_light_thread = threading.Thread(target=light)
traffic_light_thread.start()
模拟车辆根据红绿灯规则行驶
def car(name):
while True:
如果事件被设置,即绿灯亮,车辆可以行驶
if event.is_set():
print(f"Car {name} is running...")
time.sleep(1)
else:
print(f"Car {name} sees red light, waiting...")
event.wait() 等待事件被设置,即绿灯亮起
启动车辆线程
car_thread = threading.Thread(target=car, args=("Car1",))
car_thread.start()
等待线程结束(这里使用了一个无限循环,因为红绿灯和车辆会一直运行)
traffic_light_thread.join()
car_thread.join()
这个程序创建了一个红绿灯线程和一个模拟车辆行驶的线程。红绿灯线程使用`Event`对象来控制红绿灯的状态,车辆线程则根据红绿灯的状态来决定是否可以行驶。
请注意,这个程序是一个简化的模拟,实际的红绿灯系统会更复杂,可能包括多个方向的红绿灯、倒计时、行人信号等。此外,实际应用中红绿灯的状态变化通常由交通信号灯控制器或交通管理中心来管理,而不是通过程序模拟