请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3364469 新帖:35

网页版的get_ticks函数存在内存泄漏

螺罗丝发表于:10 月 11 日 01:59回复(1)

您好,

我在最近的研究程序中发现get_ticks函数存在内存泄漏问题。我把这个问题精简到附件的notebook中了。
简单说,当下列循环运行时,

for t in active_futures[['ticker','start_date', 'end_date']].values:
    et = pd.DataFrame(get_ticks(t[0],start_dt=t[1],end_dt=pd.to_datetime(t[1])   datetime.timedelta(days = 20), fields= fields, count=None))
    #print(et)
    print(t[0])
    gc.collect()

所有变量都未经进一步保存,程序的内存使用不应该增加。
可是问题是,如果运行了附件的程序,会出现内存不够的现象。
考虑到程序很简洁,初步猜测是get_ticks函数出现了内存泄漏(比如底层引用未释放等)

另外,9个月前我在聚宽网页上用过同样的程序,没有内存泄漏。

请帮忙修复一下,谢谢。

import pandas as pd
import numpy as np
import jqdata as jq
import os
import gc
import resource

fields=['time', 'current', 'volume', 'money', 'position']
def get_active_futures(start_date, end_date, startfrom = None):
    end_date = jq.get_trade_days(start_date=None, end_date=end_date, count=1)[-1]
    start_date = jq.get_trade_days(start_date=None, end_date=start_date, count=2)[0]
    prog_enddate = pd.to_datetime(end_date)
    prog_startdate = pd.to_datetime(start_date)
    
    commodity_futures_master = get_all_securities(types='futures')
    commodity_futures_master = commodity_futures_master.drop(['type'], axis = 1).rename_axis('ticker').reset_index()
    #print(commodity_futures_master)
    valids = commodity_futures_master['ticker'].apply(lambda x: not (x.split('.')[0].endswith('8888') or x.split('.')[0].endswith('9999') ) )
    commodity_futures_master = commodity_futures_master.loc[valids, :]
    commodity_futures_master['start_date'] = pd.to_datetime(commodity_futures_master['start_date'])
    commodity_futures_master['end_date'] = pd.to_datetime(commodity_futures_master['end_date'])
    
    cond1 = commodity_futures_master['start_date'] <= prog_enddate
    cond2 = commodity_futures_master['end_date'] >= prog_startdate

    #var = commodity_futures_master['ticker'].apply(lambda x: x[:-9])
    #cond3 = var.apply(lambda x: x not in ['IF', 'IH', 'T', 'TF', 'TS', 'IC'])
    #cond4 = ~ commodity_futures_master['ticker'].apply(lambda x: x[:-5].endswith('8888') or x[:-5].endswith('9999'))
    
    
    commodity_futures_master = commodity_futures_master.loc[cond1 & cond2 ]
    
    if startfrom is not None:
        commodity_futures_master = commodity_futures_master.loc[ commodity_futures_master['ticker'] > startfrom, :]
        #print(commodity_futures_master)
    
    
    active_futures = commodity_futures_master
    active_futures.loc[active_futures['start_date'] <= prog_startdate, 'start_date'] = prog_startdate
    active_futures.loc[active_futures['end_date'] >= prog_enddate, 'end_date'] = prog_enddate
    return active_futures
active_futures = get_active_futures('2005-01-04', '2015-01-01','A')
for t in active_futures[['ticker','start_date', 'end_date']].values:
    et = pd.DataFrame(get_ticks(t[0],start_dt=t[1],end_dt=pd.to_datetime(t[1]) + datetime.timedelta(days = 20), fields= fields, count=None))
    #print(et)
    print(t[0])
    gc.collect()
A0501.XDCE
A0503.XDCE
A0505.XDCE
A0507.XDCE
A0509.XDCE
A0511.XDCE
A0601.XDCE
A0603.XDCE
A0605.XDCE
A0607.XDCE
A0609.XDCE
A0611.XDCE
A0701.XDCE
A0703.XDCE
A0705.XDCE
A0707.XDCE
A0709.XDCE
A0711.XDCE
A0801.XDCE
A0803.XDCE
A0805.XDCE
A0807.XDCE
A0809.XDCE
A0811.XDCE
A0901.XDCE
A0903.XDCE
A0905.XDCE
A0907.XDCE
A0909.XDCE
A0911.XDCE
A1001.XDCE
A1003.XDCE
A1005.XDCE
A1007.XDCE
A1009.XDCE
A1011.XDCE
A1101.XDCE
A1103.XDCE
A1105.XDCE
A1107.XDCE
A1109.XDCE
A1111.XDCE
A1201.XDCE
A1203.XDCE
A1205.XDCE
A1207.XDCE
A1209.XDCE
A1211.XDCE
A1301.XDCE
A1303.XDCE
A1305.XDCE
A1307.XDCE
A1309.XDCE
A1311.XDCE
A1401.XDCE
A1403.XDCE
A1405.XDCE
A1407.XDCE
A1409.XDCE
A1411.XDCE
A1501.XDCE
A1503.XDCE
A1505.XDCE
A1507.XDCE
A1509.XDCE
A1511.XDCE
A1601.XDCE
A1603.XDCE
A1605.XDCE
AG1209.XSGE
AG1210.XSGE
AG1211.XSGE
AG1212.XSGE
AG1301.XSGE
AG1302.XSGE
AG1303.XSGE
AG1304.XSGE
AG1305.XSGE
AG1306.XSGE
AG1307.XSGE
AG1308.XSGE
AG1309.XSGE
AG1310.XSGE
AG1311.XSGE
AG1312.XSGE
AG1401.XSGE
AG1402.XSGE
AG1403.XSGE
AG1404.XSGE
AG1405.XSGE
AG1406.XSGE
AG1407.XSGE
AG1408.XSGE
AG1409.XSGE
AG1410.XSGE
AG1411.XSGE
AG1412.XSGE
AG1501.XSGE
AG1502.XSGE
AG1503.XSGE
AG1504.XSGE
AG1505.XSGE
AG1506.XSGE
AG1507.XSGE
AG1508.XSGE
AG1509.XSGE
AG1510.XSGE
AG1511.XSGE
AG1512.XSGE
AL0501.XSGE
AL0502.XSGE
AL0503.XSGE
AL0504.XSGE
AL0505.XSGE
AL0506.XSGE
AL0507.XSGE
AL0508.XSGE
AL0509.XSGE
AL0510.XSGE
AL0511.XSGE
AL0512.XSGE
AL0601.XSGE
AL0602.XSGE
AL0603.XSGE
AL0604.XSGE
AL0605.XSGE
AL0606.XSGE
AL0607.XSGE
AL0608.XSGE
AL0609.XSGE
AL0610.XSGE
AL0611.XSGE
AL0612.XSGE
AL0701.XSGE
AL0702.XSGE
AL0703.XSGE
AL0704.XSGE
AL0705.XSGE
AL0706.XSGE
AL0707.XSGE
AL0708.XSGE
AL0709.XSGE
AL0710.XSGE
AL0711.XSGE
AL0712.XSGE
AL0801.XSGE
AL0802.XSGE
AL0803.XSGE
AL0804.XSGE
AL0805.XSGE
AL0806.XSGE
AL0807.XSGE
AL0808.XSGE
AL0809.XSGE
AL0810.XSGE
AL0811.XSGE
AL0812.XSGE
AL0901.XSGE
AL0902.XSGE
AL0903.XSGE
AL0904.XSGE
AL0905.XSGE
AL0906.XSGE
AL0907.XSGE
AL0908.XSGE
AL0909.XSGE
AL0910.XSGE
AL0911.XSGE
AL0912.XSGE
AL1001.XSGE
AL1002.XSGE
AL1003.XSGE
AL1004.XSGE
AL1005.XSGE
AL1006.XSGE
AL1007.XSGE
AL1008.XSGE
AL1009.XSGE
AL1010.XSGE
AL1011.XSGE
AL1012.XSGE
AL1101.XSGE
AL1102.XSGE
AL1103.XSGE
AL1104.XSGE
AL1105.XSGE
AL1106.XSGE
AL1107.XSGE
AL1108.XSGE
AL1109.XSGE
AL1110.XSGE
AL1111.XSGE
AL1112.XSGE
AL1201.XSGE
AL1202.XSGE
AL1203.XSGE
AL1204.XSGE
AL1205.XSGE
AL1206.XSGE
AL1207.XSGE
AL1208.XSGE
AL1209.XSGE
AL1210.XSGE
AL1211.XSGE
AL1212.XSGE
AL1301.XSGE
AL1302.XSGE
AL1303.XSGE
AL1304.XSGE
AL1305.XSGE
AL1306.XSGE
AL1307.XSGE
AL1308.XSGE
AL1309.XSGE
AL1310.XSGE
AL1311.XSGE
AL1312.XSGE
AL1401.XSGE
AL1402.XSGE
AL1403.XSGE
AL1404.XSGE
AL1405.XSGE
AL1406.XSGE
AL1407.XSGE
AL1408.XSGE
AL1409.XSGE
AL1410.XSGE
AL1411.XSGE
AL1412.XSGE
AL1501.XSGE
AL1502.XSGE
AL1503.XSGE
AL1504.XSGE
AL1505.XSGE
AL1506.XSGE
AL1507.XSGE
AL1508.XSGE
AL1509.XSGE
AL1510.XSGE
AL1511.XSGE
AL1512.XSGE
AU0806.XSGE
AU0807.XSGE
AU0808.XSGE
AU0809.XSGE
AU0810.XSGE
AU0811.XSGE
AU0812.XSGE
AU0901.XSGE
AU0902.XSGE
AU0903.XSGE
AU0904.XSGE
AU0905.XSGE
AU0906.XSGE
AU0907.XSGE
AU0908.XSGE
AU0909.XSGE
AU0910.XSGE
AU0911.XSGE
AU0912.XSGE
AU1001.XSGE
AU1002.XSGE
AU1003.XSGE
AU1004.XSGE
AU1005.XSGE
AU1006.XSGE
AU1007.XSGE
AU1008.XSGE
AU1009.XSGE
AU1010.XSGE
AU1011.XSGE
AU1012.XSGE
AU1101.XSGE
AU1102.XSGE
AU1103.XSGE
AU1104.XSGE
AU1105.XSGE
AU1106.XSGE
AU1107.XSGE
AU1108.XSGE
AU1109.XSGE
AU1110.XSGE
AU1111.XSGE
AU1112.XSGE
AU1201.XSGE
AU1202.XSGE
AU1203.XSGE
AU1204.XSGE
AU1205.XSGE
AU1206.XSGE
AU1207.XSGE
AU1208.XSGE
AU1209.XSGE
AU1210.XSGE
AU1211.XSGE
AU1212.XSGE
AU1301.XSGE
AU1302.XSGE
AU1303.XSGE
AU1304.XSGE
AU1305.XSGE
AU1306.XSGE
AU1307.XSGE
AU1308.XSGE
AU1309.XSGE
AU1310.XSGE
AU1311.XSGE
AU1312.XSGE
AU1401.XSGE
AU1402.XSGE
AU1403.XSGE
AU1404.XSGE
AU1405.XSGE
AU1406.XSGE
AU1407.XSGE
AU1408.XSGE
AU1409.XSGE
AU1410.XSGE
AU1411.XSGE
AU1412.XSGE
AU1501.XSGE
AU1502.XSGE
AU1503.XSGE
AU1504.XSGE
AU1506.XSGE
AU1508.XSGE
AU1510.XSGE
B0503.XDCE
B0505.XDCE
B0507.XDCE
B0509.XDCE
B0511.XDCE
B0601.XDCE
B0603.XDCE
B0605.XDCE
B0607.XDCE
B0609.XDCE
B0611.XDCE
B0701.XDCE
B0703.XDCE
B0705.XDCE
B0707.XDCE
B0709.XDCE
B0711.XDCE
B0801.XDCE
B0803.XDCE
B0805.XDCE
B0807.XDCE
B0809.XDCE
B0811.XDCE
B0901.XDCE
B0903.XDCE
B0905.XDCE
B0907.XDCE
B0909.XDCE
B0911.XDCE
B1001.XDCE
B1003.XDCE
B1005.XDCE
B1007.XDCE
B1009.XDCE
B1011.XDCE
B1101.XDCE
B1103.XDCE
B1105.XDCE
B1107.XDCE
B1109.XDCE
B1111.XDCE
B1201.XDCE
B1203.XDCE
B1205.XDCE
B1207.XDCE
B1209.XDCE
B1211.XDCE
B1301.XDCE
B1303.XDCE
B1305.XDCE
B1307.XDCE
B1309.XDCE
B1311.XDCE
B1401.XDCE
B1403.XDCE
B1405.XDCE
B1407.XDCE
B1409.XDCE
B1411.XDCE
B1501.XDCE
B1503.XDCE
B1505.XDCE
B1507.XDCE
B1509.XDCE
B1511.XDCE
BB1404.XDCE
BB1405.XDCE
BB1406.XDCE
BB1407.XDCE
BB1408.XDCE
BB1409.XDCE
BB1410.XDCE
BB1411.XDCE
BB1412.XDCE
BB1501.XDCE
BB1502.XDCE
BB1503.XDCE
BB1504.XDCE
BB1505.XDCE
BB1506.XDCE
BB1507.XDCE
BB1508.XDCE
BB1509.XDCE
BB1510.XDCE
BB1511.XDCE
BB1512.XDCE
BU1402.XSGE
BU1403.XSGE
BU1404.XSGE
BU1405.XSGE
BU1406.XSGE
BU1407.XSGE
BU1408.XSGE
BU1409.XSGE
BU1410.XSGE
BU1411.XSGE
BU1412.XSGE
BU1501.XSGE
BU1502.XSGE
BU1503.XSGE
BU1504.XSGE
BU1505.XSGE
BU1506.XSGE
BU1509.XSGE
BU1512.XSGE
BU1603.XSGE
BU1606.XSGE
BU1609.XSGE
BU1612.XSGE
C0501.XDCE
C0503.XDCE
C0505.XDCE
C0507.XDCE
C0509.XDCE
C0511.XDCE
C0601.XDCE
C0603.XDCE
C0605.XDCE
C0607.XDCE
C0609.XDCE
C0611.XDCE
C0701.XDCE
C0703.XDCE
C0705.XDCE
C0707.XDCE
C0709.XDCE
C0711.XDCE
C0801.XDCE
C0803.XDCE
C0805.XDCE
C0807.XDCE
C0809.XDCE
C0811.XDCE
C0901.XDCE
C0903.XDCE
C0905.XDCE
C0907.XDCE
C0909.XDCE
C0911.XDCE
C1001.XDCE
C1003.XDCE
C1005.XDCE
C1007.XDCE
C1009.XDCE
C1011.XDCE
C1101.XDCE
C1103.XDCE
C1105.XDCE
C1107.XDCE
C1109.XDCE
C1111.XDCE
C1201.XDCE
C1203.XDCE
C1205.XDCE
C1207.XDCE
C1209.XDCE
C1211.XDCE
C1301.XDCE
C1303.XDCE
C1305.XDCE
C1307.XDCE
C1309.XDCE
C1311.XDCE
C1401.XDCE
C1403.XDCE
C1405.XDCE
C1407.XDCE
C1409.XDCE
C1411.XDCE
C1501.XDCE
C1503.XDCE
C1505.XDCE
C1507.XDCE
C1509.XDCE
C1511.XDCE
CF0501.XZCE
CF0503.XZCE
CF0504.XZCE
CF0505.XZCE
CF0506.XZCE
CF0507.XZCE
CF0508.XZCE
CF0509.XZCE
CF0510.XZCE
CF0511.XZCE
CF0512.XZCE
CF0601.XZCE
CF0603.XZCE
CF0604.XZCE
CF0605.XZCE
CF0606.XZCE
CF0607.XZCE
CF0608.XZCE
CF0609.XZCE
CF0610.XZCE
CF0611.XZCE
CF0612.XZCE
CF0701.XZCE
CF0703.XZCE
CF0704.XZCE
CF0705.XZCE
CF0707.XZCE
CF0709.XZCE
CF0711.XZCE
CF0801.XZCE
CF0803.XZCE
CF0805.XZCE
CF0807.XZCE
CF0809.XZCE
CF0811.XZCE
CF0901.XZCE
CF0903.XZCE
CF0905.XZCE
CF0907.XZCE
CF0909.XZCE
CF0911.XZCE
CF1001.XZCE
CF1003.XZCE
CF1005.XZCE
CF1007.XZCE
CF1009.XZCE
CF1011.XZCE
CF1101.XZCE
CF1103.XZCE
CF1105.XZCE
CF1107.XZCE
CF1109.XZCE
CF1111.XZCE
CF1201.XZCE
CF1203.XZCE
CF1205.XZCE
CF1207.XZCE
CF1209.XZCE
CF1211.XZCE
CF1301.XZCE
CF1303.XZCE
CF1305.XZCE
CF1307.XZCE
CF1309.XZCE
CF1311.XZCE
CF1401.XZCE
CF1403.XZCE
CF1405.XZCE
CF1407.XZCE
CF1409.XZCE
CF1411.XZCE
CF1501.XZCE
CF1503.XZCE
CF1505.XZCE
CF1507.XZCE
CF1509.XZCE
CF1511.XZCE
CS1503.XDCE
CS1505.XDCE
CS1507.XDCE
CS1509.XDCE
CS1511.XDCE
CU0501.XSGE
CU0502.XSGE
CU0503.XSGE
CU0504.XSGE
CU0505.XSGE
CU0506.XSGE
CU0507.XSGE
CU0508.XSGE
CU0509.XSGE
CU0510.XSGE
CU0511.XSGE
CU0512.XSGE
CU0601.XSGE
CU0602.XSGE
CU0603.XSGE
CU0604.XSGE
CU0605.XSGE
CU0606.XSGE
CU0607.XSGE
CU0608.XSGE
CU0609.XSGE
CU0610.XSGE
CU0611.XSGE
CU0612.XSGE
CU0701.XSGE
CU0702.XSGE
CU0703.XSGE
CU0704.XSGE
CU0705.XSGE
CU0706.XSGE
CU0707.XSGE
CU0708.XSGE
CU0709.XSGE
CU0710.XSGE
CU0711.XSGE
CU0712.XSGE
CU0801.XSGE
CU0802.XSGE
CU0803.XSGE
CU0804.XSGE
CU0805.XSGE
CU0806.XSGE
CU0807.XSGE
CU0808.XSGE
CU0809.XSGE
CU0810.XSGE
CU0811.XSGE
CU0812.XSGE
CU0901.XSGE
CU0902.XSGE
CU0903.XSGE
CU0904.XSGE
CU0905.XSGE
CU0906.XSGE
CU0907.XSGE
CU0908.XSGE
CU0909.XSGE
CU0910.XSGE
CU0911.XSGE
CU0912.XSGE
CU1001.XSGE
CU1002.XSGE
CU1003.XSGE
CU1004.XSGE
CU1005.XSGE
CU1006.XSGE
CU1007.XSGE
CU1008.XSGE
CU1009.XSGE
CU1010.XSGE
CU1011.XSGE
CU1012.XSGE
CU1101.XSGE
CU1102.XSGE
CU1103.XSGE
CU1104.XSGE
CU1105.XSGE
CU1106.XSGE
CU1107.XSGE
CU1108.XSGE
CU1109.XSGE
CU1110.XSGE
CU1111.XSGE
CU1112.XSGE
CU1201.XSGE
CU1202.XSGE
CU1203.XSGE
CU1204.XSGE
CU1205.XSGE
CU1206.XSGE
CU1207.XSGE
CU1208.XSGE
CU1209.XSGE
CU1210.XSGE
CU1211.XSGE
CU1212.XSGE
CU1301.XSGE
CU1302.XSGE
CU1303.XSGE
CU1304.XSGE
CU1305.XSGE
CU1306.XSGE
CU1307.XSGE
CU1308.XSGE
CU1309.XSGE
CU1310.XSGE
CU1311.XSGE
CU1312.XSGE
CU1401.XSGE
CU1402.XSGE
CU1403.XSGE
CU1404.XSGE
CU1405.XSGE
CU1406.XSGE
CU1407.XSGE
CU1408.XSGE
CU1409.XSGE
CU1410.XSGE
CU1411.XSGE
CU1412.XSGE
CU1501.XSGE
CU1502.XSGE
CU1503.XSGE
CU1504.XSGE
CU1505.XSGE
CU1506.XSGE
CU1507.XSGE
CU1508.XSGE
CU1509.XSGE
 

全部回复

0/140

量化课程

    移动端课程