量化投资从0开始系列 ---- 5. 多线程和流量限制

这里解决的问题是当服务器有流量限制的时候,如何通过多线程达到流量上限,同时又如何通过限流器保证不超过流量上限。

根据官方文档的说明https://waditu.com/document/2?doc_id=27,获取日线行情有两种方式,一种是遍历股票代码,另一种是遍历交易日期。理论上讲,取得全量数据的时候遍历股票代码会更快,因为目前股票总数是4493,而交易日期已经有7450,遍历股票代码的循环次数会更少。但是因为我的积分太低,每次返回的数据上限是5000条,那么上市时间长的股票就需要查询两次。况且取增量数据的时候,肯定是按日期更好实现,所以最后决定还是就按交易日期的方式实现。

按目前的积分,tushare允许每分钟访问500次。实测单线程的时候,本地每分钟只能发出400个请求左右,没有达到最优的执行效率,所以引入线程池,把请求数打满。

    def __get_stock_daily(self, start_date='19700101', max_worker=multiprocessing.cpu_count() * 2):
        df_cal_date = StockCalendar().query(
            fields='distinct cal_date',
            where=f'is_open=\'1\' and cal_date >=\'{start_date}\' and cal_date < \'{tomorrow()}\''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blkq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值