matlab - 通过批处理文件同时运行多个 MATLAB 实例
问题描述
有没有办法通过批处理文件在不同的 MATLAB 实例中同时运行多个 .m 文件?我想要完成的任务如下:
打开 x 个 MATLAB 实例;
让不同的实例同时运行不同的.m文件(这样我的CPU能力就可以完全利用);
当所有实例完成后,退出所有 MATLAB。
单个批处理文件可以完成这个过程吗?我想使用单个批处理文件的原因是我想在我的 MATLAB 脚本中调用这个批处理文件。本质上,我想做并行计算。(由于我的一些脚本必须在没有并行计算工具箱的 MATLAB 2007 上运行,我必须想办法解决。)
请解释一下代码的语法,因为我对命令提示符知之甚少。
目前,我只知道如何按顺序执行任务,就像下面显示的代码一样。
cd "C:\My_MATLAB_folder_path"
matlab r- "mfile01;exit"
matlab r- "mfile02;exit"
...
matlab r- "mfilexx;exit"
如果命令提示符无法实现此过程,我可以使用哪些替代方法?一件重要的事情是,无论使用什么方法,它都必须能够在 MATLAB 脚本中调用。
解决方案
当 CMD 从批处理文件执行命令或程序时,它会等待启动的程序退出,然后执行下一个命令。为了克服这个问题,您可以在每次调用 MATLAB 之前加上 start 命令:start "" matlab r- "mfilexx;exit"
此外,在 MATLAB 调用之间稍作延迟可能是防止硬盘承受过大压力的好主意。
因此,可以通过以下方式完成任务:
@echo off
setlocal
REM Delay is in seconds after /t switch
set "delay=timeout /t 1 /nobreak >nul"
REM Or this for Windows XP: (Delay is in milliseconds after -w switch)
set "delay=ping -n 1 -w 1000 127.255.255.255 >nul"
cd /d "C:\My_MATLAB_folder_path"
start "" matlab -r "this.m;exit"
%delay%
start "" matlab -r "that.m;exit"
%delay%
...
或者,可以通过以下方式简化批处理脚本:
cd /d "C:\My_MATLAB_folder_path"
for %%A in (
"this.m"
"that.m"
"other.m"
"add each file in a new line or on the same line separated with space.m" "one another.m"
) do (
start "" matlab -r "%%~A;exit"
%delay%
)
推荐阅读
- javascript - Ajax : 对另一种表单的一个 ajax 请求
- javascript - 带有 Intersection Observer API 问题的图像延迟加载
- python - Python - 使用 Beautifulsoup 从网页中提取数据
- r - 将用户定义的字符串替换函数应用于小标题的内容时遇到问题
- javascript - 平衡字符Javascript
- python - 在 connexion 中链接 yaml 文件时出错
- arrays - 如何将数组发送到函数中
- java - 在java中使用单栈实现队列
- c# - 什么是上下文?如何将嵌入对象发送到 webhook?
- facebook - 从私人 Facebook 群组中抓取电子邮件