利用多线程技术模拟出龟免赛跑的场面,设计一个线程类模拟参与赛跑的角色,创建该类的两个对象分别代表乌龟和免子,免子跑速快,但在中间休息的睡眠时间长些。到终点 线程运行结束。
时间: 2024-02-27 22:59:21 浏览: 117
好的,以下是一个简单的利用多线程技术模拟龟免赛跑的示例代码:
```python
import threading
import time
import random
class Animal(threading.Thread):
def __init__(self, name, speed, rest):
threading.Thread.__init__(self)
self.name = name
self.speed = speed
self.rest = rest
self.total_distance = 0
def run(self):
print(f"{self.name}开始跑步!")
while self.total_distance < 100:
distance = self.speed * random.uniform(0.1, 1.0)
self.total_distance += distance
print(f"{self.name}已经跑了{self.total_distance:.2f}米。")
time.sleep(0.1)
if self.total_distance >= 50 and self.name == "兔子":
print(f"兔子跑了50米,正在休息{self.rest}秒。")
time.sleep(self.rest)
print(f"{self.name}跑完了比赛!")
turtle = Animal("乌龟", 10, 0)
rabbit = Animal("兔子", 20, 2)
turtle.start()
rabbit.start()
turtle.join()
rabbit.join()
print("比赛结束!")
```
在这个示例代码中,我们首先定义了一个`Animal`类,它继承自`threading.Thread`类。我们在这个类中定义了`__init__`和`run`两个方法,`__init__`方法用于初始化类的属性,包括名字、速度和休息时间;`run`方法是线程的主体代码,也就是用于模拟动物跑步的过程。在`run`方法中,我们使用一个`while`循环模拟动物跑步,直到跑完100米为止。在每次循环中,我们使用`random.uniform`函数生成一个随机数来模拟动物每次跑的距离,并且使用`time.sleep`函数来模拟动物每次跑步的时间间隔。如果兔子跑了50米,那么它会停下来休息一段时间,使用`time.sleep`函数来模拟休息时间。最后,我们创建了两个`Animal`对象代表乌龟和兔子,并且启动了它们的线程。使用`join`函数来等待两个线程结束后输出比赛结束的信息。
阅读全文