【发布时间】:2012-04-17 04:27:31
【问题描述】:
我正在学习 SimPy。目前我需要定期调用一个方法,直到模拟结束。
我是这样写的
import SimPy.Simulation as Simpy
class mod(Simpy.Process):
def do(self):
print(Simpy.now(), "Do!")
yield Simpy.hold, self, 5.0
class trigger(Simpy.Process):
def ACTIONS(self):
while True:
for i in self.target.do():
yield i
yield Simpy.hold, self, 1.0
def set_target(self, tar):
self.target = tar
Simpy.initialize()
obj = mod()
tri = trigger()
tri.set_target(obj)
tri.start(at=0.0)
Simpy.simulate(until=100.0)
由于while True: 中的语句,它应该每1.0 个时间单位产生target.do()。因此输出应该是:
0.0 Do!
1.0 Do!
2.0 Do!
......
但实际上,它每 6.0 个时间单位产生 target.do()(yield 保持等待直到 target.do() 完成):
0.0 Do!
6.0 Do!
12.0 Do!
我想知道如何才能定期将目标函数生成到计划中,而无需等到它完成执行?
谢谢! ......
【问题讨论】: