
[英]NotImplementedError() what does this mean, event profiler pyalgotrade
[英]What does it mean to "trigger" an event in SimPy?
我是 SimPy 4.0.2 和离散事件仿真的新手。 我对“触发”事件的真正含义感到非常困惑。
根据官方“Docs » SimPy in 10 Minutes » Basic Concepts”,它指出:
当一个进程产生一个事件时,该进程被挂起。 当事件发生时(我们说事件被触发),SimPy 恢复进程。
在我看来,这意味着一个事件在被触发时将从事件队列中弹出以供处理。
然而,根据“文档 » 主题指南 » 事件”,它指出:
如果事件被触发,它会在给定时间安排并插入到 SimPy 的事件队列中。
那么这意味着一个事件在被触发时会被插入到事件队列中?
我想知道触发事件时事件队列上的操作到底会发生什么? 这个问题实际上也与其他定义有关,例如“已处理”, yield
。 考虑下图(如果不是太离谱的话),“触发”应该对应A点还是B点? 非常感谢!
inserted? popped?
triggered? triggered? processed?
| |<--event-->|
V V V
--A--------------B-----------C--> (time)
^ ^
| |
yield event yield event
(suspended?) (resumed?)
我的理解是,当事件被触发时,它会被安排在事件队列中进行处理。 大多数事件在触发时安排。 我能想到的唯一允许您安排其在未来处理的例外是超时事件。
从技术上讲,当您创建一个超时事件时,它会在创建时触发并在时间(现在+延迟)安排在事件队列中进行处理。
所以当大多数事件在时间 t 被触发时,它们也被安排在时间 t 处理,并在时间 t 处理。
另请注意,模拟是单线程的,因此事件队列还会对计划由 fifo 同时处理的所有事件进行排序,并且一次处理一个事件。
当您屈服于一个事件时,您正在等待该事件完成处理,即使该事件尚未被触发并安排在事件队列中。
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.