python量化分析系列之---python分别使用多线程和多进程获取所有股票实时数据
来源:互联网 发布:个人免费域名注册 编辑:程序博客网 时间:2024/05/16 17:04
前一天简单介绍了python怎样获取历史数据和实时分笔数据,那么如果要获取所有上市公司的实时分笔数据,应该怎么做呢?
肯定有人想的是,用一个列表存储所有上市公司的股票代号,然后无限循环获取不就得了吗?
现在深市和沪市的股票一共有3400多只,如果你真这样做的话,获取一次所有股票的实时数据需要十几二十秒的时间,甚至更多,而且非常容易因为等待超时而使程序挂掉,如果你的模型对实时数据的质量要求非常高,这肯定是不行的,即使不考虑数据质量,获取数据的脚本经常挂也是不行的。
那首先想到的是多线程和多进程。然而因为python全局解释锁的存在,在多线程情况下,即使是在多核cpu的情况下,也只能同时执行一个线程,即使如此,多线程获取一次所有股票实时数据所花的时间,依然比在一个大循环里面运用单线程少得多,这是因为python从网络获取数据存储到本地,是IO密集型任务,python多线程依然能很大程度上提高性能,具体细节在这里不多做介绍。
为了充分利用带宽资源,IO资源,在这里使用多线程和多进程两种方式获取股票数据,
首先我们需要有一个比较全的所有股票代号文件,我已经替大家准备好了,关注微信公众号【数据之佳】回复“股票”四个字即可得到下载链接,压缩包提供多线程和多进程获取股票实时数据两个案例,其中的stocks文件内存储的是股票代号文件,提供的是截止今日(2017-11-23)的所有上市公司代号。
在这里提供多线程的例子,多进程的例子请在【数据之佳】里面查看,同时代码也给大家准备好了,上面回复的“股票”得到的下载链接里面直接就有python源文件,下载以后修改一下路径直接就可以跑了,其中用到的python版本是昨天分享的文章中anaconda自带的python3.5,代码依然使用jupyter编写,操作系统为win10,在linux上只需要稍加改动就可以了执行了。
import pandas as pdimport numpy as npimport tushare as tsimport osimport timefrom threading import Threaddef get_data(stock): date=time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time())) data=ts.get_realtime_quotes(stock) print(data) path='F:\\stocks' data.to_csv(path+'\\'+date+'_'+stock,mode='wt')time1=time.strftime('%Y-%m-%d-%H-%M-%S')print(time1)with open('F:\stocks\stock_codes\stocks') as f: try: while True: line=next(f).strip() t=Thread(target=get_data,args=(line,)) t.start() except StopIteration: passtime2=time.strftime('%Y-%m-%d-%H-%M-%S')print(time2)
其中time1是获取一次所有股票的开始时间,time2是结束时间,具体有耗时多上时间,请读者下载元代以后自行测试
2017-11-23-21-16-23
2017-11-23-21-16-33
这是我注释了prinf(data)一行以后所花的时间,恰好用了10秒,如果你的网络好一些,可能会更快,当然这不是最快的方法,最快的方法可以实现一秒以内获取一次。
数据已经存储在指定目录下,使用多进程的例子请各位自行获取下载链接下载。
下面是【数据之佳】的二维码,我会在公众号分享一些量化建模的案例,结果等。
- python量化分析系列之---python分别使用多线程和多进程获取所有股票实时数据
- python量化分析系列之---使用python获取股票历史数据和实时分笔数据
- python量化分系列之---使用tushare获取股票实时分笔数据延时有多大
- python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据
- python 获取股票数据
- 【量化小讲堂-Python&Pandas系列01】如何快速上手使用Python进行金融数据分析
- Python获取Yahoo股票数据
- Python获取国内股票数据
- Python 实现股票数据的实时抓取
- Python 实现股票数据的实时抓取
- Python-量化分析之路
- 树莓派搭建股票量化分析服务器 基于tushare python
- 获取历史和实时股票数据接口
- 获取历史和实时股票数据接口
- 获取历史和实时股票数据接口
- python量化分析系列之---为什么量化交易中稳定盈利是第一要义
- 使用Python来获取国内股票数据的方法:TuShare
- Python获取股票历史数据和收盘数据的代码实现
- 浅谈UML学习笔记之类图
- PADS VX2.2在WIN7系统下菜单显示不完整的解决方法
- POJ2251Dungeon Master(bfs)
- 后面需要看的视频
- wpf 绑定数据无法更新ui控件可能存在的问题
- python量化分析系列之---python分别使用多线程和多进程获取所有股票实时数据
- 将Html中表格数据导出为Excel
- CentOS下Mysql 改变数据存储路径
- 欢迎使用CSDN-markdown编辑器
- 【VC++】CString与std::string互转
- 结尾0的个数
- 深度增强学习和深度Q学习
- 用动画的方式画出任意的路径(直线、曲线、折现)
- 浅谈UML学习笔记动态模型之序列图、协作图