Browse Source

尝试消除内存

daniel-ali 2 years ago
parent
commit
cf1dfc54e2
2 changed files with 15 additions and 4 deletions
  1. 7 2
      QMT/qmt_real_hlfx.py
  2. 8 2
      QMT/real_time.py

+ 7 - 2
QMT/qmt_real_hlfx.py

@@ -17,6 +17,7 @@ import os
 import psutil
 import traceback
 from apscheduler.schedulers.blocking import BlockingScheduler
+import gc
 
 #原始版本
 
@@ -29,6 +30,7 @@ pd.set_option('display.max_columns', None) # 设置显示最大行
 fre = '1d'
 
 def run(seq):
+    print('seq=', seq)
     '''阻塞线程接收行情回调'''
     import time
     client = xtdata.get_client()
@@ -267,10 +269,13 @@ def hlfx(data):
     cursor_pool.execute(sql)
     db_pool.commit()
     print(f'{dt.now()}写入新的results{len(results_list)}个,hlfx_pool更新')
+    del df_day
+    gc.collect()
     engine_hlfx_pool.dispose()
 
 
 
+
 def bridge(list):
     print(f'MyPid is {os.getpid()}, now is {dt.now()},我需要负责{len(list)}个个股数据')
     seq = xtdata.subscribe_whole_quote(list, callback=hlfx)
@@ -281,7 +286,7 @@ def prepare():
     stocks = xtdata.get_stock_list_in_sector('沪深A股')
 
     cpu_count = 4
-    pool = mp.Pool(processes=cpu_count, maxtasksperchild=8)
+    pool = mp.Pool(processes=cpu_count, maxtasksperchild=4)
     step = math.ceil(len(stocks) / cpu_count)
     to_hlfx_list = []
 
@@ -319,7 +324,7 @@ if __name__ == '__main__':
     print('对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功', subscribe_result)
 
     scheduler = BlockingScheduler()
-    scheduler.add_job(func=prepare, trigger='cron', day_of_week='0-4', hour='9', minute='25',
+    scheduler.add_job(func=prepare, trigger='cron', day_of_week='0-4', hour='14', minute='51',
                       timezone="Asia/Shanghai")
     try:
         scheduler.start()

+ 8 - 2
QMT/real_time.py

@@ -13,6 +13,7 @@ import multiprocessing as mp
 import math
 import psutil
 from apscheduler.schedulers.blocking import BlockingScheduler
+import gc
 
 auth('18616891214', 'Ea?*7f68nD.dafcW34d!')
 db_pool = pymysql.connect(host='localhost',
@@ -25,7 +26,7 @@ engine_stock = create_engine('mysql+pymysql://root:r6kEwqWU9!v3@localhost:3307/q
 
 
 def run(seq):
-    print(seq)
+    print('seq=', seq)
     '''阻塞线程接收行情回调'''
     import time
     client = xtdata.get_client()
@@ -58,6 +59,8 @@ def ma(stock, num, data):
         return 9999999
     else:
         ma_num = (sum(df['close_front'][i:]) + data[stock]['lastPrice'])/num
+        del df
+        gc.collect()
         return ma_num
 
 
@@ -71,6 +74,8 @@ def ma_1(stock, num):
         return 9999999
     else:
         ma_num_1 = df['close_front'][i:].mean()
+        del df
+        gc.collect()
         return ma_num_1
 
 
@@ -231,6 +236,7 @@ def buy_trader(data, positions):
 
 
 def trader(data):
+    gc.collect()
     print(len(data.keys()))
 
     # 先判断卖出条件
@@ -344,7 +350,7 @@ if __name__ == '__main__':
     print('对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功', subscribe_result)
 
     scheduler = BlockingScheduler()
-    scheduler.add_job(func=bridge, trigger='cron', day_of_week='0-4', hour='9', minute='40',
+    scheduler.add_job(func=bridge, trigger='cron', day_of_week='0-4', hour='09', minute='40',
                       timezone="Asia/Shanghai")
     try:
         scheduler.start()