私はSimPyを学んでいます。現在は、シミュレーションが終了するまで定期的にメソッドを呼び出す必要があります。SimPyで待たずにイベントをスケジュール通りに定期的に取得する方法は?
私が原因while True:
内の文に
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)
ようにそれを書いて、それはすべての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!
私はどうすればよいということだろう私は実行を終了するまで待つことなく、スケジュールに定期的にターゲット関数を出力しますか?
ありがとうございました! ......