«

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. 目前结构

目前我的策略框架为:

  1. 异步协程
  2. aiohttp http请求
  3. 多线程
  4. Websocket更新触发策略,而非轮训

我不但要在网络延迟和手续费上卷你们,还要在策略框架上卷你们,哇哈哈哈哈
不过还是得向c++低头
可惜c++写起来太麻烦了,c++100行,python1行
后面慢慢把核心功能用c++实现,然后用python去调用

标签: 高频速度优化 异步携程