[讨论] 暂停后待符合条件继续执行

楼主: fxxkjoe1231 (糟糕)   2019-08-15 23:05:51
版上各位好,小弟目前有只以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...
不知是否有更直观或是更有效率的写法?
谢谢大家
作者: sunev (Veritas)   2019-08-15 23:21:00
直接用system去call exe?
楼主: fxxkjoe1231 (糟糕)   2019-08-15 23:28:00
这样的话变成matlab有没有类似start的指令可以同时多开.exe
作者: sunev (Veritas)   2019-08-16 00:07:00
所以你要同时执行四个exe ?那就照你现在的逻辑吧可改用exist或是isfile来check outfile产生了没有频率可以高一点,一秒check一次之类的
作者: sppmg (sppmg)   2019-08-17 00:29:00
batch(@system, … 再用 wait等。试试把 job object 存成cell / array,让 wait 一次等完。batch 可循环加入4个平行处理,不需你第一个 .bat 启动。https://bit.ly/2KIQiiM 以前用 gnuplot 取代 MATLAB plot 画图的指令。

Links booklink

Contact Us: admin [ a t ] ucptt.com