Python 高频量化异步协程
温馨提示:本文最后更新于2023年3月22日 23:06,若内容或图片失效,请在下方留言或联系博主。
1.踩坑
在我刚开始用异步协程框架写策略框架爽的飞起的时候
小数据没什么问题,流畅无延迟
后面加大数据量同时创建N个任务(loop.create_task)
那么最后面创建的这个任务,会延迟好几秒才执行,直接给我整懵逼了
任务越多,延迟情况越严重,我测试,任务很少,也会有0.00几秒的延迟
再使用多线程同时创建多个任务执行就不会有延迟的问题出现
但是一个新问题出现了,不使用异步协程又没办法使用aiohttp??
答案:用threading多线程调用含asyncio异步函数
相关资料:https://blog.csdn.net/LeKZzz/article/details/127343128
2. uvloop
import uvloop
uvloop.new_event_loop()
loop.create_task(print_money())
loop.run_forever()
Ps:使用uvloop 可以使 asyncio 更快。事实上,它至少比 nodejs、gevent 和其他 Python 异步框架要快 两倍 。基于 uvloop 的 asyncio 的速度几乎接近了 Go 程序的速度。
3. 目前结构
目前我的策略框架为:
- 异步协程
- aiohttp http请求
- 多线程
- Websocket更新触发策略,而非轮训
我不但要在网络延迟和手续费上卷你们,还要在策略框架上卷你们,哇哈哈哈哈
不过还是得向c++低头
可惜c++写起来太麻烦了,c++100行,python1行
后面慢慢把核心功能用c++实现,然后用python去调用