我看到在 vnctp 的 cpp 代码中,vnctpmd 和 vnctptd 都在 cpp 部分实现了一个自线程内的 TaskQueue 消费逻辑,我的问题是,为什么不直接降 cpp 的回调函数直接映射到 python 绑定函数上而是再用了一层事件分发机制?这样做是为了解决什么问题?
我看到在 vnctp 的 cpp 代码中,vnctpmd 和 vnctptd 都在 cpp 部分实现了一个自线程内的 TaskQueue 消费逻辑,我的问题是,为什么不直接降 cpp 的回调函数直接映射到 python 绑定函数上而是再用了一层事件分发机制?这样做是为了解决什么问题?
CTP内部缓冲区很小,回调函数阻塞超过1秒可能就会崩掉。
推送数据到Python中需要先获取GIL,而这个获取操作的延时不确定,可能超过1秒。
没有缓冲区的后果,就是封装的接口在99.99%情况下都工作正常,但就是有0.01%的可能莫明其妙崩掉,还查不出来原因。
用Python的交易员 wrote:
CTP内部缓冲区很小,回调函数阻塞超过1秒可能就会崩掉。
推送数据到Python中需要先获取GIL,而这个获取操作的延时不确定,可能超过1秒。
没有缓冲区的后果,就是封装的接口在99.99%情况下都工作正常,但就是有0.01%的可能莫明其妙崩掉,还查不出来原因。
多谢陈大解答