news 2026/6/26 2:33:27

Jupyter Notebook 反复运行天勤策略内存涨:close 与内核习惯

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jupyter Notebook 反复运行天勤策略内存涨:close 与内核习惯

前言

很多国内期货量化的研究阶段Jupyter Notebook里进行:改两行均线参数就 Shift+Enter 重跑,比整脚本重启方便。天勤TqSdkTqApi在创建时会建立与行情、交易服务的连接并维护订阅;若每个单元格都api = TqApi(...)而从不api.close(),旧连接和缓冲仍占内存,表现为越跑越卡、行情乱跳、甚至连接数超限——这在期货量化教学群里非常常见,并非天勤“泄漏”,而是资源未释放的使用习惯

本文说明 Notebook 场景下如何正确关闭 Api、与wait_update循环的关系、异步register_update_notify的注意点,并区分研究用 Notebook7×24 实盘进程。不默认你已区分 TqSim 与 TqKq。

一、期货研究在 Notebook 里常做什么

典型操作:拉几分钟 1 分钟或 5 分钟 K 线、看datetime是否推进、试一笔模拟TargetPosTask、画均线。这些都需要TqApi活着。问题在于:同一内核里重复创建多个 Api,每个都在后台收国内期货行情,内存与连接叠加。

错误模式示意:

# 单元格 1api=TqApi(TqSim(),auth=TqAuth(...))# 跑 while 或若干 wait_update# 单元格 2 再次执行api=TqApi(TqSim(),auth=TqAuth(...))# 旧 api 未 close

二、正确习惯:单例 + 先关后建

if"api"inglobals()andapiisnotNone:api.close()api=TqApi(TqSim(),auth=TqAuth("快期账户","密码"))

或研究一段结束后Kernel → Restart,再只创建一个 Api。长而久的while True建议放到.py用命令行跑,Notebook 只跑有限次wait_update做片段验证。

三、try/finally 保证 close

api=TqApi(TqSim(),auth=TqAuth(...))try:for_inrange(50):api.wait_update()# 观察 kl.iloc[-1].datetime 是否变化finally:api.close()

回测单元格捕获BacktestFinished后同样应close(),否则同一内核里第二次TqBacktest可能遇到资源未释放问题。

四、异步 notify 与 Notebook

若在协程 demo 里使用register_update_notify,官方建议async with api.register_update_notify() as update_chan;若手动拿 channel,用完需await update_chan.close(),否则会泄漏。另:不要在协程里直接wait_update(),天勤会报错;Notebook 里混同步 while 与 async task 时要只保留一套模型。

五、调试循环不要无限占着 Api

调试可加次数上限或wait_update(deadline=...),避免单元格永远运行导致无法 close。实盘部署在国内服务器上时,用 systemd 等单进程守护,不要用合盖休眠的笔记本扛夜盘。

六、与期货实盘的关系

Notebook 适合验证“K 线 datetime 触发是否正确”“一笔模拟单持仓是否变化”;国内期货连续交易与风控,应放到独立.py进程,配置与实盘相同的is_changing规则,避免 Notebook 特有的一次性变量残留进生产。

总结

Jupyter 反复运行天勤策略导致内存涨,主因是多个TqApiclose()。期货量化研究应在单内核保持单 Api,重跑前先close()或重启内核;长循环用脚本;异步 notify 用 async with 或显式 close。

弄清TqApi是长连接资源,而不是普通变量,Notebook 体验会稳定很多。

FAQ

1)%reset 够吗?

建议先api.close()再 reset。

2)两个 Notebook 同账户?

每内核独立,避免同账户多端抢线。

3)内存仍涨?

检查是否缓存巨大 DataFrame;del 不再用的表。

4)能否 pickle Api?

不要;每会话重建。

风险提示

本文讨论开发环境,不构成投资建议。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 2:32:17

做跨境直播,团队怎么搭?三大主流模式组织架构拆解

随着海外直播赛道逐渐细分,不同业务模式对团队能力的要求也越来越明显。很多团队在项目启动阶段关注设备、网络和内容规划,却容易忽略一个关键问题:团队架构是否与业务模式匹配。电商直播强调商品运营,拍卖直播强调实时协同&#…

作者头像 李华
网站建设 2026/6/26 2:32:17

终极Word转LaTeX解决方案:深入解析docx2tex架构与最佳实践

终极Word转LaTeX解决方案:深入解析docx2tex架构与最佳实践 【免费下载链接】docx2tex Converts Microsoft Word docx to LaTeX 项目地址: https://gitcode.com/gh_mirrors/do/docx2tex 还在为学术论文的格式转换而烦恼吗?当你花费数小时手动调整W…

作者头像 李华
网站建设 2026/6/26 2:32:16

MATLAB实现WGS84经纬度与本地ENU坐标快速互转的实用函数集

本文还有配套的精品资源,点击获取 简介:一套开箱即用的MATLAB坐标转换工具,专注解决WGS84大地坐标(经度、纬度、椭球高)和本地东-北-天(ENU)直角坐标之间的双向换算需求。包含enu_to_geodeti…

作者头像 李华
网站建设 2026/6/26 2:32:44

Windows用户必看:iPhone USB网络共享驱动安装终极指南

Windows用户必看:iPhone USB网络共享驱动安装终极指南 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_mir…

作者头像 李华
网站建设 2026/6/26 2:32:17

统信UOS服务器版上,达梦DM8数据库安装的5个关键步骤与一个必改参数

统信UOS服务器版上达梦DM8数据库安装的5个关键决策与一个致命参数在国产化替代浪潮中,达梦数据库DM8作为核心基础软件,正被越来越多的金融、政务和企业级用户部署到统信UOS服务器版环境中。但不同于常见的MySQL或PostgreSQL安装流程,DM8在安装…

作者头像 李华
网站建设 2026/6/20 5:30:07

怎样轻松备份微信聊天记录:3步完成数据永久保存的实用指南

怎样轻松备份微信聊天记录:3步完成数据永久保存的实用指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因手机丢失或系统升级而丢失珍贵的微信聊天…

作者头像 李华