vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 19
声望: 0

根据https://github.com/vnpy/vnpy/blob/master/examples/cta_backtesting/portfolio_backtesting.ipynb 里面的方法进行了多品种的回测,遇到了以下问题:
回测的多品种时,内存占用一直在增长。
portfolio_backtesting.ipynb里面的方法是每测试一个品种都重新建立回测引擎 engine = BacktestingEngine(),添加策略add_strategy(),载入数据load_data(),最终得出df累加到dfp进行统计。每次加载行情数据的时候都会存储在self.history_data上,不知道为何,每次重新新建engine对象的时候,旧的对象里面变量的的存储空间不应该是自动释放的吗?既然没有自动释放,我的想法是,每次执行完engine.run_backtesting()测试一个品种完毕的时候,把self.history_data所占用的内存显式释放掉,我用的是del history_data,gc.collect().,但是并不能释放,内存占用并不减少。 不知道是否我释放内存的方式有错,还是说有别的原因,请各位不吝指教。

Administrator
avatar
加入于:
帖子: 4130
声望: 230

为了提高后续回测速度,回测引擎中对于加载过的历史数据有缓存逻辑,不会自动释放。

如果要释放的话,可以直接在Jupyter中重启Python进程即可。

Member
avatar
加入于:
帖子: 19
声望: 0

我直接把@lru_cache(maxsize=999) 给注释掉就可以了,就不会缓存了,谢谢哈

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3