import akshare as ak
import pandas as pd
from multiprocessing.dummy import Pool as ThreadPool
import datetime
import timedef get_hs300_stock_codes():'''獲取滬深300股票代碼列表:return:'''hs300=ak.index_stock_cons_sina("000300")codes=hs300['code']codes=codes.tolist()return codesdef dwon_data(code, period='daily',from_date='20170301', to_date=datetime.date.today().strftime('%Y-%m-%d'),fq='qfq'):'''下載滬深300成分股歷史數據:param symbol: 股票代碼,可以在 ak.stock_zh_a_spot_em() 中獲取:param period:choice of {'daily', 'weekly', 'monthly'}:param from_date:開始查詢的日期:param to_date:結束查詢的日期:param fq:復權,默認返回不復權的數據; qfq: 返回前復權后的數據; hfq: 返回后復權后的數據:return:'''df = ak.stock_zh_a_hist(symbol=code, period=period, start_date=from_date, end_date=to_date,adjust=fq)# 獲取# df=df.loc[:,['日期','開盤','最高','最低','收盤','成交量']]# df.columns=['datetime','open','high','low','close','volume']print(df.head())# # 構建保存路徑與文件名# path_file = 'E:\datas\stock\\hs300\data_suorce\%s.csv' % (code)## # 保存下載數據# df.to_csv(path_file) # 保存文件# print('已導出%s' % (code))if __name__ == '__main__':start_time = time.time()# 獲取滬深300代碼列表code = get_hs300_stock_codes()# 創建線程池,添加10個線程with ThreadPool(10) as pool:pool.map_async(dwon_data, code) #加載線程pool.close() #pool.join()end_time = time.time()print('程序運行時間:{:.2f}秒'.format(end_time - start_time))