简单的事件同时发生多次

时间:2013-01-21 11:12:37

标签: python simpy

我正在使用SimEvent类Simpy模拟器来定义一些事件(例如 a,b,c )。现在我有一个等待事件 a,b c 的过程,如下所示。

yield waitevent, self, (a, b, c)

一旦发生任何这些事件,该过程将被重新激活。在我的情况下,事件可以多次发生。即,两个或多个进程可以在相同的模拟时间调用a.signal()。 如果事件 a 发生3次,我该如何获取该信息? eventsFired 数组是否重复了相同的事件?

1 个答案:

答案 0 :(得分:1)

事件只能在给定时刻触发一次(即在模拟时间向前移动之前)。如果多次调用a.signal(),它将保持触发状态。有几种方法可以解决这个问题:

yield waitevent, self, (a, b, c)
for ev in self.eventsFired:
    if ev == a:
        print 'a fired'
    elif ev == b:
        print 'b fired'
    elif ev == c:
        print 'c fired'
    else:
        print 'discontinuous event occured'

如果您希望它独立响应每个触发的事件,那就是这样。如果无关紧要,并且所有必须发生的事情都是代码继续进行,那么标准构造将会:

yield waitevent, self, (a, b, c)
print 'event fired was', self.eventsFired[0].name
相关问题