Kolega ma plik MATLAB startup.m
zawierający kod interaktywny (wywołuje polecenie questdlg
, aby zapytać go, w którym katalogu projektu chce pracować).Wykryj, czy uruchomiono MATLAB startup.m na robotniku.
Działa to dobrze podczas bezpośredniego uruchamiania programu MATLAB. Jednak musi również równolegle uruchamiać kod MATLAB, uruchamiając matlabpool
.
Podczas uruchamiania, robotnicy w matlabpool
działają swój plik startup.m
, dotarcie do questdlg
a następnie wiszące (nieskończenie, aż Ctrl C).
Łatwym rozwiązaniem jest po prostu pozbyć się interaktywnego kodu z jego startup.m
, ponieważ nie jest to naprawdę konieczne.
Ale czy istnieje sposób na sprawdzenie, czy ten startup.m
jest uruchamiany przez pracownika uruchamiającego - coś podobnego do isdeployed
lub ismcc
? Następnie może zachować kod interaktywny, który uzna za przydatny, ale tylko wykonać go, gdy nie uruchamia się pracownika.
Wydawało się, że polecenie getCurrentWorker
może być potrzebne, ale uważam, że działa tylko podczas wykonywania zadania, a nie podczas uruchamiania.
Dzięki @Edric. Osobiście byłoby dobrze z czymś nieudokumentowanym, gdyby to był "właściwy" sposób na zrobienie tego - ale coś udokumentowanego, co w zasadzie działa, również jest w porządku. Brzmi jak "usejava" zadziała - dzięki! –