很多朋友跟我反馈,本章的多线程学习不好学,看着视频敲代码运行还是报错。因此,我简单分析下本节的代码,把源码贴出来看,会比较清楚。
这一节我们获取沪深两市上市公司高管持股数据信息,这节里我们还要一起学习多线程的使用。其实,tusharepro接口调用现在都是很简单,主要是我希望,每次带给大家的东西都能让大家有点收获,而不是只是简单的调调接口,然后看下数据结果。这节里,多线程的使用非常有利于我们后续运行多个策略及做高频时的交易处理。
下面,我们一起来看下。
导入包
import tushare as ts
import pandas as pd
import threading
import datetime
定义一个方法,调用tushare接口,获取高管持股数据:
def getHolv(data_list):
stock_code_list = data_list['ts_code']
for code in stock_code_list:
df = pro.stk_rewards(ts_code=code)
# 000001.SZ.xls格式文件名
df.to_excel("./data/%s.xls" % code)
其中的data_list,是我们上一节获取的沪深两市所有股票的列表信息。
下面,我们需要定义一个多线程类:
class DownloadThread(threading.Thread):
def __init__(self, threadID, name, dataCode):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.dataCode = dataCode
def run(self):
startTime = datetime.datetime.now()
print(self.name + ",开始时间:" + str(startTime))
getHolv(self.dataCode)
下面,我们初始化tusharepro接口,定义并且开启多线程。
我们开启两条线程,第一条线程处理前2000个股票的数据,第二个线程处理剩下的数据。因此将data切割,并且子线程要加入join,即主线程要等待子线程结束才结束。
pro = ts.pro_api()
data = pd.read_csv('股票列表.csv')
# 创建新线程,将code分批
thread1 = DownloadThread(1, "第一批", data[0:2000])
thread2 = DownloadThread(2, "第二批", data[2000:])
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("任务结束")
好了,以上就是我们开启多线程,调用tushare获取高管持股数据。我们这边附上源码:
import tushare as ts
import pandas as pd
import threading
import datetime
class DownloadThread(threading.Thread):
def __init__(self, threadID, name, dataCode):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.dataCode = dataCode
def run(self):
startTime = datetime.datetime.now()
print(self.name + ",开始时间:" + str(startTime))
getHolv(self.dataCode)
def getHolv(data_list):
stock_code_list = data_list['ts_code']
for code in stock_code_list:
df = pro.stk_rewards(ts_code=code)
# 000001.SZ.xls格式文件名
df.to_excel("./data/%s.xls" % code)
pro = ts.pro_api()
data = pd.read_csv('股票列表.csv')
# 创建新线程,将code分批
thread1 = DownloadThread(1, "第一批", data[0:2000])
thread2 = DownloadThread(2, "第二批", data[2000:])
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("任务结束")
下面,我们顺便把上一节获取股票基础数据信息的源码贴出来,供大家参考。
import tushare as ts
pro = ts.pro_api()
# 股票列表获取
data_basic = pro.stock_basic()
data_basic.to_csv("股票列表.csv")
data_basic_filed = pro.stock_basic(exchange="SZSE", fields='ts_code,symbol,name,area,industry,list_date,is_hs')
data_basic_filed.to_csv("股票列表指定字段.csv")
# 上市公司基本信息
data_company = pro.stock_company()
data_company.to_csv("上市公司信息.csv")
data_basic_filed = pro.stock_company(exchange="SZSE", fields='ts_code,manager,employees')
data_basic_filed.to_csv("上市公司信息指定字段.csv")
# 沪深通成分股
data_const = pro.hs_const(hs_type='SZ')
data_const.to_csv("深交所成分股.csv")
data_const = pro.hs_const(hs_type='SH')
data_const.to_csv("上交所成分股.csv")
好了,以上就是我们本章的所有内容,希望对大家有所帮助。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/76855
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!