[討論] 暫停後待符合條件繼續執行

作者: 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