123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import os
- import pandas as pd
- import xtquant.xtdata
- from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
- from xtquant.xttype import StockAccount
- from xtquant import xtdata, xtconstant
- from functools import reduce
- from datetime import datetime as dt
- import pymysql
- import math
- import multiprocessing as mp
- import traceback
- db_pool = pymysql.connect(host='localhost',
- user='root',
- port=3307,
- password='r6kEwqWU9!v3',
- database='hlfx_pool')
- cursor_pool = db_pool.cursor()
- def err_call_back(err):
- print(f'问题在这里~ error:{str(err)}')
- traceback.print_exc()
- def to_sql(stocks, sector_list):
- print(f'my pid is {os.getpid()}')
- for stock in stocks:
- sec_lt = []
- for i in sector_list:
- sector = xtdata.get_stock_list_in_sector(i)
- if stock in sector:
- sec_lt.append(i)
- print(f'{stock}属于:')
- print(f'{sec_lt}板块')
- results_list = ','.join(set(sec_lt))
- print(results_list)
- sql = "INSERT INTO sector_data (stock_code, sector) VALUES('%s', '%s')" \
- % (stock, results_list)
- cursor_pool.execute(sql)
- db_pool.commit()
- if __name__ == '__main__':
- sttime = dt.now()
- stock_list = xtdata.get_stock_list_in_sector('沪深A股')
- sector_list = xtdata.get_sector_list()
- step = math.ceil(len(stock_list) / mp.cpu_count())
- pool = mp.Pool(processes=mp.cpu_count())
- for i in range(0, len(stock_list), step):
- pool.apply_async(func=to_sql, args=(stock_list[i:i+step], sector_list,), error_callback=err_call_back)
- pool.close()
- pool.join()
- print(dt.now()-sttime)
|