大家遇到过这个问题么?
大家遇到过这个问题么?
接上面代码如下:如果去掉下面的subscribe部分,cpu恢复正常。
xtp_gateway = main_engine.add_gateway(XtpGateway)
xtp_setting_filename = 'XTP_connect.json'
settings = load_json(xtp_setting_filename)
main_engine.connect(settings, XtpGateway.default_name)
main_window = MainWindow(main_engine, event_engine)
main_window.showMaximized()
# time.sleep(5)
contract = main_engine.get_contract("300750.SZSE")
main_engine.write_log(contract)
req = SubscribeRequest(
symbol=contract.symbol,
exchange=contract.exchange
)
main_engine.subscribe(req, XtpGateway.default_name)
qapp.exec()
是否用了内网的UDP行情?
MTF wrote:
是否用了内网的UDP行情?
是的,用了UDP行情。
多谢分享这个思路。 我用的是xtp的试用接口。 在配置中,我改成TCP后,CPU占用一下就变成5%的正常水平了。UDP确实是占了100%。 网络中不是TCP协议更耗资源么。
UDP是订阅的组播行情,所以会受到全市场的所有行情,然后在API中进行过滤处理,自然就占用高了。TCP订阅则是在行情服务器端做了过滤,因此就只需要处理订阅了的合约数据
MTF wrote:
UDP是订阅的组播行情,所以会受到全市场的所有行情,然后在API中进行过滤处理,自然就占用高了。TCP订阅则是在行情服务器端做了过滤,因此就只需要处理订阅了的合约数据
多谢分享。 市场中有3万多个symbol(包括基金指数之类的),绝大多数的机构只需要用到其中4300个股票,这么看,UDP就不要订阅了,因为绝大多数的数据是下游不会用?UDP在其他方面的优势得很大才有诱惑力啊。UDP会比TCP快辣么多么
延时上会快很多的,主要由底层通讯协议决定。
不过就像普通人开F1可能没啥好处反而很危险一样,不是人人都有必要用了。