python实现多线程行情抓取工具的方法

当我们实现了单线程,接下来就是实现多线程了,下面这篇文章主要给大家介绍了关于python实现多线程行情抓取工具的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。

思路

借助python当中threading模块与Queue模块组合可以方便的实现基于生产者-消费者模型的多线程模型。Jimmy大神的tushare一直是广大python数据分析以及业余量化爱好者喜爱的免费、开源的python财经数据接口包。

平时一直有在用阿里云服务器通过tushare的接口自动落地相关财经数据,但日复权行情数据以往在串行下载的过程当中,速度比较慢,有时遇到网络原因还需要重下。每只股票的行情下载过程中都需要完成下载、落地2个步骤,一个可能需要网络开销、一个需要数据库mysql的存取开销。2者原本就可以独立并行执行,是个典型的“生产者-消费者”模型。

基于queue与threading模块的线程使用一般采用以下的套路:

相关接口

1,股票列表信息接口

作用

获取沪深上市公司基本情况。属性包括:

code,代码

name,名称

industry,所属行业

area,地区

pe,市盈率

outstanding,流通股本(亿)

totals,总股本(亿)

totalAssets,总资产(万)

liquidAssets,流动资产

fixedAssets,固定资产

reserved,公积金

reservedPerShare,每股公积金

esp,每股收益

bvps,每股净资

pb,市净率

timeToMarket,上市日期

undp,未分利润

perundp, 每股未分配

rev,收入同比(%)

profit,利润同比(%)

gpr,毛利率(%)

npr,净利润率(%)

holders,股东人数

调用方法

importtushare as ts

ts.get_stock_basics()

返回效果

  name industry area  pe outstanding  totals totalAssets

code

600606 金丰投资  房产服务 上海  0.00  51832.01 51832.01 744930.44

002285 世联行  房产服务 深圳 71.04  76352.17 76377.60 411595.28

000861 海印股份  房产服务 广东 126.20  83775.50 118413.84 730716.56

000526 银润投资  房产服务 福建 2421.16  9619.50 9619.50  20065.32

000056 深国商  房产服务 深圳  0.00  14305.55 26508.14 787195.94

600895 张江高科  园区开发 上海 171.60 154868.95 154868.95 1771040.38

600736 苏州高新  园区开发 江苏 48.68 105788.15 105788.15 2125485.75

600663 陆家嘴  园区开发 上海 47.63 135808.41 186768.41 4562074.50

600658 电子城  园区开发 北京 19.39  58009.73 58009.73 431300.19

600648 外高桥  园区开发 上海 65.36  81022.34 113534.90 2508100.75

600639 浦东金桥  园区开发 上海 57.28  65664.88 92882.50 1241577.00

600604 市北高新  园区开发 上海 692.87  33352.42 56644.92 329289.50

2,日复权行情接口

作用

提供股票上市以来所有历史数据,默认为前复权,读取后存到本地,作为后续分析的基础

调用方法

返回结果

   open high close low  volume  amount

date

2015-03-16 13.27 13.45 13.39 13.00 81212976 1073862784

2015-03-13 13.04 13.38 13.37 13.00 40548836 532739744

2015-03-12 13.29 13.95 13.28 12.96 71505720 962979904

2015-03-11 13.35 13.48 13.15 13.00 59110248 780300736

2015-03-10 13.16 13.67 13.59 12.72 105753088 1393819776

2015-03-09 13.77 14.73 14.13 13.70 139091552 1994454656

2015-03-06 12.17 13.39 13.39 12.17 89486704 1167752960

2015-03-05 12.79 12.80 12.17 12.08 26040832 966927360

2015-03-04 13.96 13.96 13.30 12.58 26636174 1060270720

2015-03-03 12.17 13.10 13.10 12.05 19290366 733336768

实现

废话不多说,直接上代码,

生产者线程,读取行情

消费者线程,本地存储

定义主线程

执行效果

原本需要2,3个小时才能执行完成的每日复权行情增量落地,有效缩短至了1小时以内,这里线程数并不上越多越好,由于复权行情读的是新浪接口,在高并发情况下会返回HTTP 503服务器过载的错误,另外高并发下可能需要使用IP代理池,下载的时段也需要尝试多个时段进行。初次尝试,如果有更好的方法或者哪里有考虑不周的地方欢迎留言建议或者指正。

猜你喜欢

转载自blog.csdn.net/qq_40925239/article/details/88949307