VNPY中最重要的数据处理类就是EventEngine,负责各模块间的数据通信和针对不同数据进行函数调用处理。EventEngine由两个主要的结构构成,一个是Queue进行数据的传输和存放,一个是利用字典来进行数据类型和函数的对应及执行,可以将其视为一个具有数据存储和数据处理的容器。
首先从Event类来看:
class Event:
def __init__(self, type: str, data: Any = None):
""""""
self.type: str = type
self.data: Any = data
可以将Event理解为为数据添加了对应的业务属性,便于根据业务属性找到对应的函数进行处理。Event存在两个属性,其中type属性用于存储Event的属性,使用字符串进行标识;其中data属性用于存储实际的数据。
接下来看EventEngine类:
class EventEngine:
def __init__(self, interval: int = 1):
self._interval: int = interval
# 数据传输队列
self._queue: Queue = Queue()
# 判断Engine是否启动
self._active: bool = False
self._thread: Thread = Thread(target=self._run)
self._timer: Thread = Thread(target=self._run