如何在特定时间安排请求?

1 投票
1 回答
636 浏览
提问于 2025-05-01 13:41

我正在使用 simpy 3.xx 和 Python 2.7。
我想建立一个火车模拟。需要的是火车过程在模拟中的特定时间生成一个进入请求。这应该很简单,但由于某种原因,我找不到解决办法。

假设在模拟时间为 20 的时候,我想让一个过程生成一个请求事件,我该怎么做呢?通常我会生成一个请求:req = res.request(),然后再 yield req。我想在特定时间安排一个请求事件。

暂无标签

1 个回答

2

你应该从一个 timeout 事件开始。这里有一个基于 教程 的超时事件。正如你所说,这个事件会在20秒的时候生成一个请求事件。

#at time 20 generate a request event
import simpy
class TrainStation:
    def __init__(self,env):
        self.env= env
        self.request_event = env.event()
        self.request_receiver_process = env.process(self.receive_request())
        self.request_producer_process = env.process(self.produce_request())

    def produce_request(self):
        yield self.env.timeout(20)
        self.request_event.succeed()
        self.request_event = self.env.event()

    def receive_request(self):
        print("Waiting for request at time: {0}".format(env.now))
        yield self.request_event
        print("Request received at time: {0}".format(env.now))

env = simpy.Environment()
trainStation = TrainStation(env)
env.run()

撰写回答