使用示例处理之前的函数时,该函数用于产生env.timeout(seconds),但在这里它会产生事件的实例(env.event())。 'yield self.class_ends'到底产生了什么? 我的代码在这里:
class School:
def __init__(self, env):
self.env = env
self.class_ends = env.event()
self.pupil_procs = [env.process(self.pupil()) for i in range(3)]
self.bell_proc = env.process(self.bell())
def bell(self):
for i in range(2):
yield self.env.timeout(45)
self.class_ends.succeed()
self.class_ends = self.env.event()
print()
def pupil(self):
for i in range(2):
print(r' \o/', end='')
yield self.class_ends
env = simpy.Environment()
school = School(env)
env.run()
答案 0 :(得分:0)
它产生一个env.event()。您定义了self.class_ends = env.event()以便返回它。如果希望它返回env.timeout(seconds),则应这样定义它。
答案 1 :(得分:0)
env.event()
创建一个事件。
可能在某个时间点发生的事件。
一个事件
- 可能会发生(:attr:
triggered
是False
),- 将要发生(:attr:
triggered
是True
)或- 发生过(:attr:
processed
是True
)。每个事件都绑定到环境 env ,并且最初不是 触发。已安排事件由环境处理 由:meth:
succeed
、: meth:fail
触发后 :方法:trigger
。这些方法还设置了 ok 标志和 value 活动的结束。一个事件有一个:attr:
callbacks
列表。回调可以是任何 可召唤的。处理事件后,将调用所有回调 将事件作为单个参数。回调可以检查 通过检查 ok 成功完成了该事件,并通过 它产生的值。失败的事件永远不会被静默忽略,并且会引发异常 经过处理。如果回调处理异常,则必须设置 :attr:
defused
至True
来防止这种情况。该类还实现了
__and__()
(&
)和__or__()
(|
)。如果您使用其中一个运算符连接两个事件,则 :class:Condition
事件已生成,可让您同时等待或 其中之一。