analyser_hj3415 4.0.10__py3-none-any.whl → 4.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,6 +17,7 @@ from utils_hj3415 import tools, setup_logger
17
17
  from db_hj3415 import myredis
18
18
  from analyser_hj3415.analyser import MIs, tsa
19
19
  from analyser_hj3415.analyser.tsa.common import PandasTimestampField, ChartPoint
20
+ import pickle
20
21
 
21
22
  mylogger = setup_logger(__name__,'INFO')
22
23
  expire_time = tools.to_int(os.getenv('DEFAULT_EXPIRE_TIME_H', 48)) * 3600
@@ -99,6 +100,7 @@ class MyLSTM:
99
100
  """
100
101
  # 미래 몇일을 예측할 것인가?
101
102
  future_days = 30
103
+ REDIS_LSTM_DATA_SUFFIX = "lstm_chart_data"
102
104
 
103
105
  def __init__(self, ticker: str):
104
106
  mylogger.debug(f'MyLSTM set up ticker : {ticker}')
@@ -479,7 +481,7 @@ class MyLSTM:
479
481
 
480
482
  def generate_chart_data(self, refresh:bool, num=5) -> LSTMChartData:
481
483
  mylogger.info("**** Start generate_lstm_chart_data... ****")
482
- redis_name = f'{self.ticker}_lstm_chart_data'
484
+ redis_name = f'{self.ticker}_{MyLSTM.REDIS_LSTM_DATA_SUFFIX}'
483
485
 
484
486
  mylogger.info(
485
487
  f"redisname: '{redis_name}' / refresh : {refresh} / expire_time : {expire_time / 3600}h")
@@ -546,13 +548,34 @@ class MyLSTM:
546
548
 
547
549
  def get_chart_data(self) -> Optional[LSTMChartData]:
548
550
  mylogger.debug("**** Start get_lstm_chart_data... ****")
549
- redis_name = f'{self.ticker}_lstm_chart_data'
551
+ redis_name = f'{self.ticker}_{MyLSTM.REDIS_LSTM_DATA_SUFFIX}'
550
552
  if myredis.Base.exists(redis_name):
551
553
  mylogger.debug(f"ttl: {myredis.Base.get_ttl(redis_name)}")
552
554
  return myredis.Base.get_value(redis_name)
553
555
  else:
554
556
  return None
555
557
 
558
+ @staticmethod
559
+ def bulk_get_chart_data(tickers: List[str]) -> Dict[str, Optional[LSTMChartData]]:
560
+ # --- (1) 파이프라인 GET ---
561
+ pipe = myredis.Base.redis_client.pipeline()
562
+ redis_keys = [f"{ticker}_{MyLSTM.REDIS_LSTM_DATA_SUFFIX}" for ticker in tickers]
563
+ for redis_key in redis_keys:
564
+ pipe.get(redis_key)
565
+ results_from_redis = pipe.execute() # [val1, val2, ...]
566
+
567
+ final_results = {}
568
+
569
+ for ticker, val in zip(tickers, results_from_redis):
570
+ if val is None:
571
+ final_results[ticker] = None
572
+ else:
573
+ # Redis에 pickled 데이터가 있다면 언피클해서 담기
574
+ lstm_data = pickle.loads(val)
575
+ final_results[ticker] = lstm_data
576
+
577
+ return final_results
578
+
556
579
  @staticmethod
557
580
  def caching_chart_data(tickers:list, num:int):
558
581
  mylogger.info(f"*** caching_chart_data ***")
@@ -605,10 +628,18 @@ class CorpLSTM(MyLSTM):
605
628
  MyLSTM.caching_chart_data([CorpLSTM.code_to_ticker(code) for code in ranking_topn.keys() ], num=num)
606
629
 
607
630
  @staticmethod
608
- def caching_chart_data_bulk(codes: list, num=5):
631
+ def caching_chart_data_bulk(codes: List[str], num=5):
609
632
  mylogger.info(f"*** caching_chart_data_bulk : {len(codes)} items ***")
610
633
  MyLSTM.caching_chart_data([CorpLSTM.code_to_ticker(code) for code in codes], num=num)
611
634
 
635
+ @staticmethod
636
+ def bulk_get_chart_data(codes: List[str]) -> Dict[str, Optional[LSTMChartData]]:
637
+ ticker_data = MyLSTM.bulk_get_chart_data([CorpLSTM.code_to_ticker(code) for code in codes])
638
+ code_data = {}
639
+ for ticker, data in ticker_data.items():
640
+ code_data[CorpLSTM.ticker_to_code(ticker)] = data
641
+ return code_data
642
+
612
643
 
613
644
  class MILSTM(MyLSTM):
614
645
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: analyser_hj3415
3
- Version: 4.0.10
3
+ Version: 4.1.0
4
4
  Summary: Stock analyser and database processing programs
5
5
  Requires-Python: >=3.6
6
6
  Description-Content-Type: text/markdown
@@ -9,9 +9,9 @@ analyser_hj3415/analyser/eval/mil.py,sha256=uaS7MHNlytrjEgdLc9S1zhXb5bzVAwlSMlnQ
9
9
  analyser_hj3415/analyser/eval/red.py,sha256=DZBV0qMzWD8KGvAbdxrohCVT0a5luduuhKQoN3OtNwc,13909
10
10
  analyser_hj3415/analyser/tsa/__init__.py,sha256=pg20ZQRABedTdaIoOr5t043RNKtJ7ji_WmnZrD1IhPg,147
11
11
  analyser_hj3415/analyser/tsa/common.py,sha256=ZLUkifupOlLKsrPiqR3y6FaEN4M_loZhxCZXYxkX0us,1874
12
- analyser_hj3415/analyser/tsa/lstm.py,sha256=tezdQcyLJn5rSNXbU_zApZV-kCTHPX9i7x5YujioWZI,28129
12
+ analyser_hj3415/analyser/tsa/lstm.py,sha256=X59xHpMxEaR95Tf9OIdBT4KXFTMAwZF-_s0CMHRCTk0,29401
13
13
  analyser_hj3415/analyser/tsa/prophet.py,sha256=a8XPiikRFbqHjbDT7C3hK5RsqOp5JyAbY7lDFNQfBzM,17884
14
- analyser_hj3415-4.0.10.dist-info/entry_points.txt,sha256=ZfjPnJuH8SzvhE9vftIPMBIofsc65IAWYOhqOC_L5ck,65
15
- analyser_hj3415-4.0.10.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
16
- analyser_hj3415-4.0.10.dist-info/METADATA,sha256=T5Qh8sutQmZYCb_RUFYKCB5kcVUJnwqYHhzO0mJbpx4,6778
17
- analyser_hj3415-4.0.10.dist-info/RECORD,,
14
+ analyser_hj3415-4.1.0.dist-info/entry_points.txt,sha256=ZfjPnJuH8SzvhE9vftIPMBIofsc65IAWYOhqOC_L5ck,65
15
+ analyser_hj3415-4.1.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
16
+ analyser_hj3415-4.1.0.dist-info/METADATA,sha256=cVVNfXeU__3S1w621s_3t71x6DIQpg967nhc1Wj-4oM,6777
17
+ analyser_hj3415-4.1.0.dist-info/RECORD,,