作者fxxkjoe1231 (鲁到入味)
看板MATLAB
标题[讨论] 暂停後待符合条件继续执行
时间Thu Aug 15 23:05:51 2019
版上各位好,小弟目前有只以matlab写成的主程式,
主要是制作.txt作为输入档案,并透过.bat去呼叫外部程式後输出新的档案,
之後再撷取新档案的内容。
所制作的输入档案会分成四类,分别存在input1~4的资料夹中。
待输入档案制作完後,会去呼叫一只.bat,.bat内主要是启动四只.exe_1~4,
用start的方式呼叫後同时启动并个别处理对应编号的输入资料夹内的档案,
并将输出档案放在output1~4的资料夹。
我主要的问题在於,因为输出档案的数目在不同个案情况下不同,
而四只.exe执行速度也不尽相同,有可能有一只才跑80%,而其他已经结束,
是否有办法在主程式中增加判断式,当输入与输出档案数量不同时,先暂停程序,
待全部.exe执行完毕,数量一致後再触发程式继续执行?
我目前的想法是,执行.bat後用while配合pause与特定秒数来反覆检测档案数目
dos(.bat)...
while numel(dir(input))~=numel(dir(output))
pause(60)
end
fopen...
不知是否有更直观或是更有效率的写法?
谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.227.7.177 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1565881553.A.90C.html
1F:推 sunev: 直接用system去call exe? 08/15 23:21
2F:→ fxxkjoe1231: 这样的话变成matlab有没有类似start的指令可以同时多 08/15 23:28
3F:→ fxxkjoe1231: 开.exe 08/15 23:29
4F:→ sunev: 所以你要同时执行四个exe ? 08/16 00:07
5F:→ sunev: 那就照你现在的逻辑吧 08/16 00:08
6F:→ sunev: 可改用exist或是isfile来check outfile产生了没有 08/16 00:09
7F:→ sunev: 频率可以高一点,一秒check一次之类的 08/16 00:09
8F:推 sppmg: batch(@system, … 再用 wait等。试试把 job object 存成 08/17 00:29
9F:→ sppmg: cell / array,让 wait 一次等完。 08/17 00:29
10F:→ sppmg: batch 可回圈加入4个平行处理,不需你第一个 .bat 启动。 08/17 00:33
12F:→ sppmg: ot 画图的指令。 08/17 00:38