From 462c243daaf77325fc5c9b02664ca53a71cbdfef Mon Sep 17 00:00:00 2001 From: fasiondog Date: Wed, 4 Sep 2024 05:29:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9D=BF=E5=9D=97=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hikyuu/data/em_block_to_mysql.py | 70 +++++++++++++++++------------ hikyuu/data/em_block_to_sqlite.py | 75 ++++++++++++++++++------------- 2 files changed, 87 insertions(+), 58 deletions(-) diff --git a/hikyuu/data/em_block_to_mysql.py b/hikyuu/data/em_block_to_mysql.py index 00d3c8c8..6cbfdeb9 100644 --- a/hikyuu/data/em_block_to_mysql.py +++ b/hikyuu/data/em_block_to_mysql.py @@ -4,6 +4,7 @@ # Create on: 20240102 # Author: fasiondog +from concurrent.futures import ThreadPoolExecutor from hikyuu.data.common import MARKET, get_stk_code_name_list from hikyuu.util import * from hikyuu.fetcher.stock.zh_block_em import * @@ -12,37 +13,50 @@ from hikyuu.fetcher.stock.zh_block_em import * def em_import_block_to_mysql(connect, code_market_dict, categorys=('行业板块', '概念板块', '地域板块', '指数板块')): all_block_info = {} - success_fetch_hy = False - if '行业板块' in categorys: - hku_info("获取行业板块信息") - x = get_all_hybk_info(code_market_dict) - if x: - all_block_info["行业板块"] = x - success_fetch_hy = True + with ThreadPoolExecutor(4) as executor: + if '行业板块' in categorys: + t1 = executor.submit(get_all_hybk_info, code_market_dict) - success_fetch_gn = False - if '概念板块' in categorys: - hku_info("获取概念板块信息") - x = get_all_gnbk_info(code_market_dict) - if x: - all_block_info["概念板块"] = x - success_fetch_gn = True + if '概念板块' in categorys: + t2 = executor.submit(get_all_gnbk_info, code_market_dict) - success_fetch_dy = False - if '地域板块' in categorys: - hku_info("获取地域板块信息") - x = get_all_dybk_info(code_market_dict) - if x: - all_block_info["地域板块"] = x - success_fetch_dy = True + if '地域板块' in categorys: + t3 = executor.submit(get_all_dybk_info, code_market_dict) - success_fetch_zs = False - if '指数板块' in categorys: - hku_info("获取指数板块信息") - x = get_all_zsbk_info(code_market_dict) - if x: - all_block_info["指数板块"] = x - success_fetch_zs = True + if '指数板块' in categorys: + t4 = executor.submit(get_all_zsbk_info, code_market_dict) + + success_fetch_hy = False + if '行业板块' in categorys: + x = t1.result() + hku_info("获取行业板块信息完毕") + if x: + all_block_info["行业板块"] = x + success_fetch_hy = True + + success_fetch_gn = False + if '概念板块' in categorys: + x = t2.result() + hku_info("获取概念板块信息完毕") + if x: + all_block_info["概念板块"] = x + success_fetch_gn = True + + success_fetch_dy = False + if '地域板块' in categorys: + x = t3.result() + hku_info("获取地域板块信息完毕") + if x: + all_block_info["地域板块"] = x + success_fetch_dy = True + + success_fetch_zs = False + if '指数板块' in categorys: + x = t4.result() + hku_info("获取指数板块信息完毕") + if x: + all_block_info["指数板块"] = x + success_fetch_zs = True blks = [] if success_fetch_hy: diff --git a/hikyuu/data/em_block_to_sqlite.py b/hikyuu/data/em_block_to_sqlite.py index ef419999..571a16ad 100644 --- a/hikyuu/data/em_block_to_sqlite.py +++ b/hikyuu/data/em_block_to_sqlite.py @@ -4,45 +4,60 @@ # Create on: 20240102 # Author: fasiondog +from concurrent.futures import ThreadPoolExecutor from hikyuu.data.common import MARKET, get_stk_code_name_list from hikyuu.util import * from hikyuu.fetcher.stock.zh_block_em import * +@spend_time def em_import_block_to_sqlite(connect, code_market_dict, categorys=('行业板块', '概念板块', '地域板块', '指数板块')): all_block_info = {} - success_fetch_hy = False - if '行业板块' in categorys: - hku_info("获取行业板块信息") - x = get_all_hybk_info(code_market_dict) - if x: - all_block_info["行业板块"] = x - success_fetch_hy = True + with ThreadPoolExecutor(4) as executor: + if '行业板块' in categorys: + t1 = executor.submit(get_all_hybk_info, code_market_dict) - success_fetch_gn = False - if '概念板块' in categorys: - hku_info("获取概念板块信息") - x = get_all_gnbk_info(code_market_dict) - if x: - all_block_info["概念板块"] = x - success_fetch_gn = True + if '概念板块' in categorys: + t2 = executor.submit(get_all_gnbk_info, code_market_dict) - success_fetch_dy = False - if '地域板块' in categorys: - hku_info("获取地域板块信息") - x = get_all_dybk_info(code_market_dict) - if x: - all_block_info["地域板块"] = x - success_fetch_dy = True + if '地域板块' in categorys: + t3 = executor.submit(get_all_dybk_info, code_market_dict) - success_fetch_zs = False - if '指数板块' in categorys: - hku_info("获取指数板块信息") - x = get_all_zsbk_info(code_market_dict) - if x: - all_block_info["指数板块"] = x - success_fetch_zs = True + if '指数板块' in categorys: + t4 = executor.submit(get_all_zsbk_info, code_market_dict) + + success_fetch_hy = False + if '行业板块' in categorys: + x = t1.result() + hku_info("获取行业板块信息完毕") + if x: + all_block_info["行业板块"] = x + success_fetch_hy = True + + success_fetch_gn = False + if '概念板块' in categorys: + x = t2.result() + hku_info("获取概念板块信息完毕") + if x: + all_block_info["概念板块"] = x + success_fetch_gn = True + + success_fetch_dy = False + if '地域板块' in categorys: + x = t3.result() + hku_info("获取地域板块信息完毕") + if x: + all_block_info["地域板块"] = x + success_fetch_dy = True + + success_fetch_zs = False + if '指数板块' in categorys: + x = t4.result() + hku_info("获取指数板块信息完毕") + if x: + all_block_info["指数板块"] = x + success_fetch_zs = True blks = [] if success_fetch_hy: @@ -85,8 +100,8 @@ if __name__ == "__main__": import sqlite3 from hikyuu.data.common_sqlite3 import create_database - dest_dir = "/home/fasiondog/stock" - # dest_dir = "d:\\stock" + # dest_dir = "/home/fasiondog/stock" + dest_dir = "d:\\stock" connect = sqlite3.connect(dest_dir + "/stock.db") create_database(connect)