Matlab/Simulink生成随机ID及dig文件夹的原因与解决咨询
问题分析与解决方案
一、随机ID文件夹和dig文件夹的生成原因
- 随机ID命名文件夹:这是Matlab运行Simulink仿真或脚本时自动创建的临时工作目录,用于存放仿真中间文件(编译缓存、模型临时实例、日志片段等)。通过
-batch模式批量调用Matlab时,每个进程会独立生成这类目录,默认选当前工作目录(即lib_path/param_path所在目录)作为生成位置。 dig文件夹:这是Matlab桌面组件的缓存目录,即便用无界面-batch模式运行,部分后台服务(如帮助文档索引、账号关联残留进程)仍会触发缓存生成,里面的blob_storage、Cache、Cookies等都是桌面环境的缓存数据,属于无界面运行时的遗留产物。
二、为何仅在测试量增大后出现
- 单批次测试时,Matlab进程结束后通常会自动清理临时文件,但循环调用大量测试时,进程启停过于频繁,自动清理机制来不及完成(比如进程被快速终止、清理线程被高优先级任务抢占),导致临时文件大量残留。
- 连续/并发的Matlab进程会触发桌面服务的缓存累积逻辑,单次运行不会生成的
dig文件夹,在多次运行后因缓存阈值被触发而创建并保留。
三、无需删除全部临时文件的替代方案
1. 指定专属临时目录
修改Python调用代码,给Matlab指定单独的临时文件夹,避免污染业务目录:
import tempfile import os # 创建全局临时目录,可按批次拆分或所有测试共用 matlab_temp_dir = os.path.join(tempfile.gettempdir(), "matlab_sim_tests") os.makedirs(matlab_temp_dir, exist_ok=True) # 给Matlab启动命令添加-tempdir参数指定临时目录 init_matlab_fcn = "%s -tempdir \"%s\" -batch \"addpath('%s');" % (matlab_exe, matlab_temp_dir, matlab_script) init_matlab_fcn += "addpath(genpath('%s'));" % lib_path init_matlab_fcn += "run('%s');" % param_path init_matlab_fcn += "Main_Function('%s');exit\"" % sim_project
所有临时文件会集中到指定目录,后续可按需清理(比如定期删除7天前的文件,保留近期测试临时数据)。
2. 在Matlab脚本内手动控制临时文件生成
在Main_Function开头添加代码,强制设置Simulink临时文件目录并禁用桌面缓存:
% 指定Simulink仿真缓存目录 sim_temp_dir = fullfile(tempdir, 'sim_test_temp'); mkdir(sim_temp_dir); set_param(0, 'SimulationCacheFolder', sim_temp_dir); % 禁用桌面服务,避免生成dig文件夹 com.mathworks.mlservices.MLDesktopServices.getInstance().disableDesktop();
3. 优化Python调用的进程管理
避免Matlab进程频繁启停,改为在单个Matlab进程内批量运行所有测试:
- 修改Matlab脚本,让
Main_Function接受测试列表参数,一次性处理所有测试任务 - Python仅调用一次Matlab进程,传入所有测试项目,减少进程启停带来的临时文件残留
内容的提问来源于stack exchange,提问作者kitchat
相关产品推荐
相关产品推荐

