这个案例主要是熟悉yield与基本线性流程,使用Simpy仿真这样一个场景:
- 学习30s,然后休息10s
- 循环往复
import simpy
class Scene(object):
def __init__(self, env: simpy.Environment):
self.env = env
def learning(self):
print('开始学习,学习30s', self.env.now)
yield self.env.timeout(30)
print("学完啦!!", self.env.now)
yield self.env.process(self.have_a_rest()) # 这里指定下一个流程
def have_a_rest(self):
print('开始休息,休息10s', self.env.now)
yield self.env.timeout(10)
print("休息好了", self.env.now)
def start_sim(env):
scene = Scene(env)
while True:
yield env.process(scene.learning())
if __name__ == '__main__':
key_env = simpy.Environment()
key_env.process(start_sim(env=key_env))
key_env.run(until=300)