
你好,以下是一个简单的猿编程双人风扇代码示例:
```python
import threading
class Fan:
def __init__(self, name):
self.name = name
self.status = "off"
self.lock = threading.Lock()
def turn_on(self):
with self.lock:
self.status = "on"
print(f"{self.name} turned on the fan.")
def turn_off(self):
with self.lock:
self.status = "off"
print(f"{self.name} turned off the fan.")
def get_status(self):
with self.lock:
return self.status
# 创建两个风扇对象
fan1 = Fan("Person 1")
fan2 = Fan("Person 2")
# 创建线程函数,用于控制风扇状态
def control_fan(fan, action):
if action == "on":
fan.turn_on()
elif action == "off":
fan.turn_off()
# 创建线程并启动
thread1 = threading.Thread(target=control_fan, args=(fan1, "on"))
thread2 = threading.Thread(target=control_fan, args=(fan2, "off"))
thread1.start()
thread2.start()
```
这个例子中,我们创建了一个`Fan`类来表示风扇对象。该类具有`turn_on`、`turn_off`和`get_status`方法来控制和获取风扇的状态。每个方法都进行了线程安全的操作,使用了`threading.Lock`来确保同一时间只有一个线程可以更改风扇的状态。
然后,我们创建了两个风扇对象`fan1`和`fan2`,并创建了两个线程`thread1`和`thread2`来控制风扇的状态。在`control_fan`函数中,根据传入的动作参数来调用相应的风扇方法。
最后,我们启动了两个线程,从而实现了双人控制风扇的功能。