From c20c3c10635ce78db4a86ce9c0bb1d02e90f525d Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 08 八月 2023 17:40:42 +0800
Subject: [PATCH] 单例+缓存优化

---
 third_data/kpl_block_util.py |   28 ++++++++++++++++++----------
 1 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/third_data/kpl_block_util.py b/third_data/kpl_block_util.py
index 248bd0e..b2627dd 100644
--- a/third_data/kpl_block_util.py
+++ b/third_data/kpl_block_util.py
@@ -13,15 +13,16 @@
 
 # 鏄惁涓绘澘寮�1
 # limit_up_record_datas 浠婃棩鍘嗗彶娑ㄥ仠
-def is_shsz_open_limit_up(code, block, limit_up_record_datas, code_block_dict):
+def get_shsz_open_limit_up_codes(code, block, limit_up_record_datas, code_block_dict):
     # 鑾峰彇浠婃棩9锛�30鐨勬椂闂存埑
     time_str = datetime.datetime.now().strftime("%Y-%m-%d") + " 09:30:00"
     timestamp = time.mktime(time.strptime(time_str, '%Y-%m-%d %H:%M:%S'))
+    limit_up_codes = set()
     for k in limit_up_record_datas:
         if code_block_dict.get(k[3]) == block:
             if int(k[5]) < timestamp:
-                return True, f"{k[3]}寮�涓�"
-    return False, ""
+                limit_up_codes.add(k[3])
+    return limit_up_codes
 
 
 # 浠g爜鏄惁鏄悗鎺�
@@ -87,12 +88,12 @@
     return False, block_codes_infos[:topn]
 
 
-def is_record_top_block(code, block, limit_up_record_datas, topn):
+def is_record_top_block(code, block, limit_up_record_datas, yesterday_current_limit_up_codes, topn):
     block_codes_infos = []
     limit_up_time = time.time()
     for k in limit_up_record_datas:
-        # 鍓旈櫎楂樹綅浠g爜
-        if k[12] != '棣栨澘':
+        # 鍒ゆ柇鏄惁鏄鏉�
+        if k[0] in yesterday_current_limit_up_codes:
             continue
 
         if k[3] != code:
@@ -104,11 +105,12 @@
     return __is_top_block(block, block_codes_infos, topn)
 
 
-def is_current_top_block(code, block, current_limit_up_datas, topn):
+def is_current_top_block(code, block, current_limit_up_datas, yesterday_current_limit_up_codes, topn):
     block_codes_infos = []
     limit_up_time = time.time()
     for k in current_limit_up_datas:
-        if k[4] != '棣栨澘':
+        # 鍒ゆ柇鏄惁鏄鏉�
+        if k[0] in yesterday_current_limit_up_codes:
             continue
         if k[0] != code:
             block_codes_infos.append((k[0], k[5], int(k[2])))
@@ -122,11 +124,14 @@
 
 # 鑾峰彇褰撴棩鍘嗗彶韬綅
 # shsz:鏄惁涓绘澘
-def get_code_record_rank(code, block, limit_up_record_datas, code_limit_up_reason_dict, shsz=True):
+def get_code_record_rank(code, block, limit_up_record_datas, code_limit_up_reason_dict, yesterday_current_limit_up_codes, shsz=True):
     block_codes_infos = []
     limit_up_time = time.time()
     for k in limit_up_record_datas:
         if shsz and k[3].find("00") != 0 and k[3].find("60") != 0:
+            continue
+        # 鍓旈櫎楂樹綅鏉�
+        if k[3] in yesterday_current_limit_up_codes:
             continue
         if code_limit_up_reason_dict.get(k[3]) == block:
             if k[3] != code:
@@ -143,12 +148,15 @@
 
 # 鑾峰彇褰撴棩瀹炴椂韬綅
 # before_blocks_dict鏍煎紡浣峽"浠g爜":set("鏉垮潡")}
-def get_code_current_rank(code, block, current_limit_up_datas, code_limit_up_reason_dict, shsz=False):
+def get_code_current_rank(code, block, current_limit_up_datas, code_limit_up_reason_dict, yesterday_current_limit_up_codes, shsz=False):
     block_codes_infos = []
     limit_up_time = time.time()
     for k in current_limit_up_datas:
         if shsz and k[0].find("00") != 0 and k[0].find("60") != 0:
             continue
+        # 鍓旈櫎楂樹綅鏉�
+        if k[0] in yesterday_current_limit_up_codes:
+            continue
         if code_limit_up_reason_dict.get(k[0]) == block:
             if k[0] != code:
                 # 浠g爜.娑ㄥ仠鏃堕棿

--
Gitblit v1.8.0