vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 19
声望: 1

我看到在 vnctp 的 cpp 代码中,vnctpmd 和 vnctptd 都在 cpp 部分实现了一个自线程内的 TaskQueue 消费逻辑,我的问题是,为什么不直接降 cpp 的回调函数直接映射到 python 绑定函数上而是再用了一层事件分发机制?这样做是为了解决什么问题?

Administrator
avatar
加入于:
帖子: 4130
声望: 230

CTP内部缓冲区很小,回调函数阻塞超过1秒可能就会崩掉。

推送数据到Python中需要先获取GIL,而这个获取操作的延时不确定,可能超过1秒。

没有缓冲区的后果,就是封装的接口在99.99%情况下都工作正常,但就是有0.01%的可能莫明其妙崩掉,还查不出来原因。

Member
avatar
加入于:
帖子: 19
声望: 1

用Python的交易员 wrote:

CTP内部缓冲区很小,回调函数阻塞超过1秒可能就会崩掉。

推送数据到Python中需要先获取GIL,而这个获取操作的延时不确定,可能超过1秒。

没有缓冲区的后果,就是封装的接口在99.99%情况下都工作正常,但就是有0.01%的可能莫明其妙崩掉,还查不出来原因。

多谢陈大解答

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3