0
我正在學習SimPy。目前我需要定期調用一個方法,直到模擬結束。如何在沒有等待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!
不知怎麼可能我定期將目標函數放入日程安排中,而不必等到執行完成爲止?
謝謝! ......