Un collega ha un file MATLAB startup.m
che contiene codice interattivo (chiama il comando questdlg
per chiedergli quale directory di progetto desidera lavorare).Rileva se MATLAB startup.m è in esecuzione su un worker
Questo funziona bene per lui quando si esegue direttamente MATLAB. Tuttavia, ha anche bisogno di eseguire il codice MATLAB in parallelo, dopo aver avviato uno matlabpool
.
All'avvio, i lavoratori del matlabpool
sono in esecuzione il proprio fascicolo startup.m
, di arrivare al questdlg
e poi appeso (all'infinito, o fino a quando Ctrl C).
Una soluzione semplice è quella di solo sbarazzarsi del codice interattivo dal suo startup.m
, in quanto non è davvero essenziale.
Ma c'è un modo per rilevare se questo startup.m
viene eseguito da un lavoratore che si avvia - qualcosa di simile a isdeployed
o ismcc
? Quindi è in grado di mantenere il codice interattivo che trova utile, ma lo esegue solo quando non si avvia un lavoratore.
Il comando getCurrentWorker
sembrava come se fosse ciò che era necessario, ma credo che funzioni solo durante l'esecuzione di un'attività, piuttosto che all'avvio.
Grazie a @Edric. Personalmente, sarei a posto con qualcosa di non documentato se fosse il modo "giusto" di farlo - ma anche qui qualcosa di documentato che funziona fondamentalmente va bene. Sembra che usejava funzioni - grazie! –