import akshare as ak
import pandas as pd
from multiprocessing.dummy import Pool as ThreadPool
import datetime
import time
def get_hs300_stock_codes():
获取沪深300股票代码列表
:return:
hs300=ak.index_stock_cons_sina("000300")
codes=hs300['code']
codes=codes.tolist()
return codes
def 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))
import akshare as akimport pandas as pdfrom multiprocessing.dummy import Pool as ThreadPoolimport datetimeimport timedef get_hs300_stock_codes(): ''' 获取沪深300股票代码列表 :return: ''' hs300=ak.index_stock_cons_sina("000300") codes=.
前面给大家介绍了如何用Tushare获取A股股票数据,但是现在使用Tushare会受到积分限制,没有获得积分使用起来也麻烦。今天再给大家介绍一个免费的开源数据库AKShare。
AKShare 是基于 Python 的财经数据接口库, 目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具, 主要用于学术研究目的。其是从相对权威的财经数据网站获取的原始数据, 并通过利用原始数据进行各数据源之间的交叉验证,
市场融资融券交易总量=本日融资余额+本日融券余量金额
* 本日融资余额=前日融资余额+本日融资买入额-本日融资偿还额;
* 本日融资偿还额=本日直接还款额+本日卖券还款额+本日融资强制平仓额+本日融资正权益调整-本日融资负权益调整;
* 本日融券余量=前...
public class DataComparator {
private static final int ARRAY_SIZE = 1000000;
private static final int THREAD_COUNT = 4;
private static final int SEGMENT_SIZE = ARRAY_SIZE / THREAD_COUNT;
public static void main(String[] args) throws InterruptedException {
int[] data1 = generateData(ARRAY_SIZE);
int[] data2 = generateData(ARRAY_SIZE);
long start = System.currentTimeMillis();
Thread[] threads = new Thread[THREAD_COUNT];
for (int i = 0; i < THREAD_COUNT; i++) {
int startIndex = i * SEGMENT_SIZE;
int endIndex = (i + 1) * SEGMENT_SIZE;
if (i == THREAD_COUNT - 1) {
endIndex = ARRAY_SIZE;
threads[i] = new Thread(new DataComparatorTask(data1, data2, startIndex, endIndex));
threads[i].start();
for (int i = 0; i < THREAD_COUNT; i++) {
threads[i].join();
long end = System.currentTimeMillis();
System.out.println("Time elapsed: " + (end - start) + "ms");
private static int[] generateData(int size) {
int[] data = new int[size];
Random random = new Random();
for (int i = 0; i < size; i++) {
data[i] = random.nextInt(100);
return data;
class DataComparatorTask implements Runnable {
private int[] data1;
private int[] data2;
private int startIndex;
private int endIndex;
public DataComparatorTask(int[] data1, int[] data2, int startIndex, int endIndex) {
this.data1 = data1;
this.data2 = data2;
this.startIndex = startIndex;
this.endIndex = endIndex;
@Override
public void run() {
for (int i = startIndex; i < endIndex; i++) {
if (data1[i] != data2[i]) {
System.out.println("Data mismatch at index " + i);
该示例生成两个包含1000000个随机整数的数组,并使用4个线程对它们进行逐个比较。线程将数组分为等大小的段,每个线程负责比较其中一个段。在每个线程中,使用startIndex和endIndex变量指定该线程负责比较的数组段的起始和结束索引。如果发现数据不匹配,则输出一条消息指示发现不匹配的索引。最后,主线程等待所有线程完成并打印出总共耗费的时间。
请注意,这只是一个简单的示例,实际应用中可能需要更复杂的算法和数据结构来实现更高效的多线程数据比较。
antuptree8:
价值投资/指标选股(akshare)
2301_78361361:
量化学习——跟随龙虎榜交易
神出鬼没,指的就是我!: