3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT(如e海方舟-量化交易版)中遇到 frozen importlib._bootstrap 并在 Traceback 中提示 KeyboardInterrupt:策略被手动停止,通常是因为上一次回测未正常结束,导致底层的 Python 进程成为了“僵尸进程”,或者 Python 的模块加载锁(import lock)被死锁。重新覆盖安装客户端有时无法清理掉这些残留的进程和缓存文件。
以下是彻底解决该问题的步骤:
当你在回测未结束时再次点击回测,QMT 会尝试发送 KeyboardInterrupt 信号中断原策略,但如果原策略正卡在某个 C 库或模块导入阶段,就会导致进程假死。
Ctrl + Shift + Esc 打开 Windows 任务管理器。python.exe、qmt.exe、xtquant.exe 或与 e海方舟 相关的进程。Python 在导入模块时会生成 .pyc 缓存文件。如果进程在导入时被强杀,缓存文件可能会损坏,导致后续启动时一直卡在 _find_and_load 和 importlib._bootstrap。
E:\programs\e海方舟-量化交易版\python\。__pycache__ 的文件夹,将其整个删除。.py 文件,也请一并检查并删除它们同级目录下的 __pycache__ 文件夹。如果上述两步仍未解决,可以尝试清理 QMT 的运行缓存:
E:\programs\e海方舟-量化交易版\)。userdata 或 datadir 文件夹(具体名称视券商版本而定)。temp 或 log 文件夹中的临时文件。如果每次运行该特定策略(短线热点回测_20250307_02.py)都会复现此问题,请检查代码:
init 或 handlebar 中是否有 while True: 等可能导致死循环的代码,且没有适当的 break 或 sleep。init 中一次性请求了过大的历史数据(如 ContextInfo.get_market_data_ex 请求了全市场 tick 数据),导致内存溢出或长时间阻塞。import 了某些需要长时间初始化的第三方库(如某些机器学习库),尽量将其放在文件顶部,避免在 handlebar 中重复导入。print,观察策略到底卡在哪一行代码,从而针对性优化。