Python 高頻量化異步協(xié)程
1.踩坑
在我剛開始用異步協(xié)程框架寫策略框架爽的飛起的時候
小數(shù)據(jù)沒什么問題,流暢無延遲
后面加大數(shù)據(jù)量同時創(chuàng)建N個任務(wù)(loop.create_task)
那么最后面創(chuàng)建的這個任務(wù),會延遲好幾秒才執(zhí)行,直接給我整懵逼了
任務(wù)越多,延遲情況越嚴(yán)重,我測試,任務(wù)很少,也會有0.00幾秒的延遲
再使用多線程同時創(chuàng)建多個任務(wù)執(zhí)行就不會有延遲的問題出現(xiàn)
但是一個新問題出現(xiàn)了,不使用異步協(xié)程又沒辦法使用aiohttp??
答案:用threading多線程調(diào)用含asyncio異步函數(shù)
相關(guān)資料: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. 目前結(jié)構(gòu)
目前我的策略框架為:
異步協(xié)程
aiohttp http請求
多線程
Websocket更新觸發(fā)策略,而非輪訓(xùn)
我不但要在網(wǎng)絡(luò)延遲和手續(xù)費(fèi)上卷你們,還要在策略框架上卷你們,哇哈哈哈哈
不過還是得向c++低頭
可惜c++寫起來太麻煩了,c++100行,python1行
后面慢慢把核心功能用c++實現(xiàn),然后用python去調(diào)用
博客原文:
https://sumubai.cc/post/100