作者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://www.ptt.cc/bbs/MATLAB/M.1565881553.A.90C.html
推 sunev: 直接用system去call exe? 08/15 23:21
→ fxxkjoe1231: 這樣的話變成matlab有沒有類似start的指令可以同時多 08/15 23:28
→ fxxkjoe1231: 開.exe 08/15 23:29
→ sunev: 所以你要同時執行四個exe ? 08/16 00:07
→ sunev: 那就照你現在的邏輯吧 08/16 00:08
→ sunev: 可改用exist或是isfile來check outfile產生了沒有 08/16 00:09
→ sunev: 頻率可以高一點,一秒check一次之類的 08/16 00:09
推 sppmg: batch(@system, … 再用 wait等。試試把 job object 存成 08/17 00:29
→ sppmg: cell / array,讓 wait 一次等完。 08/17 00:29
→ sppmg: batch 可迴圈加入4個平行處理,不需你第一個 .bat 啟動。 08/17 00:33
→ sppmg: ot 畫圖的指令。 08/17 00:38