aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9n

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w思路 aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w


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

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

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

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w相关接口 aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w


1,股票列表信息接口
  • 作用
    获取沪深上市公司基本情况。属性包括:

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

  • 调用方法

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

  • 返回效果

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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

  • 调用方法

d3hfZm10PXBuZw==

  • 返回结果

d3hfZm10PXBuZw==

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w实现 aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w


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

  • 生产者线程,读取行情

d3hfZm10PXBuZw==

  • 消费者线程,本地存储

d3hfZm10PXBuZw==

  • 定义主线程

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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

本文转载自:178Linux