您好,
我在最近的研究程序中发现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
本社区仅针对特定人员开放
查看需注册登录并通过风险意识测评
5秒后跳转登录页面...
移动端课程