Come posso interrompere MATLAB quando diventa davvero molto occupato?
-
18-09-2019 - |
Domanda
Sono in esecuzione una lunga simulazione in MATLAB che mi sono reso conto che ho bisogno di smettere ed eseguire di nuovo. Tuttavia, MATLAB è davvero in questo calcolo, ed è smesso di rispondere. Come posso interrompere questo percorso senza uccidere MATLAB?
(mi rendo conto che questo è un problema con molti programmi di Windows, ma è davvero acuta con MATLAB.)
Soluzione
Vai alla finestra di comando e premere Ctrl-C un sacco. Dalla mia esperienza, su una macchina single-core non si ha la possibilità, a meno che non si fa un sacco di uscita. Su una macchina multi-core o multi-processore, probabilmente fermarlo alla fine, ma ci vuole tempo.
Si veda anche http: //www.mathworks. com / support / soluzioni / it / dati / 1-188VX / index.html
Aggiunto : si tratta di una buona pratica di (1) salvare un'istantanea della vostra area di lavoro prima di eseguire qualsiasi cosa davvero lunga e (2) all'interno di un tempo molto lungo di calcolo, scrivere alcune delle variabili in un file di volta in volta, in modo da poter riprendere il calcolo se è stata interrotta (per mancanza di energia elettrica, ad esempio).
Altri suggerimenti
Come ben MATLAB risponde a CTRL-C, piuttosto dipende da quello che sta facendo. Se è nel bel mezzo di una chiamata o di BLAS LAPACK per esempio, non risponderà fino a quando quella chiamata restituisce. Se siete in un blocco di codice in cui sono in esecuzione un sacco di linee di MATLAB, ci si può aspettare CTRL-C per essere più reattivo.
Ho un trucco molto semplice per mettere in pausa (o interrompere) un'esecuzione non risponde. Se la mia simulazione è in esecuzione un lungo ciclo faccio sempre il seguente:
for ii = 1:N
do_stuff();
clear empty_script;
empty_script;
end
E poi creare un file empty_script.m
contenente quanto segue:
%keyboard
Ogni volta che voglio per sospendere l'esecuzione apro un editor di testo esterno e rimuovere la linea dicendo keyboard
in empty_script.m
. Questo mi lascia in modalità debug, dove posso guardare variabili, modificare roba o addirittura fermare il programma.
Un'altra strategia per affrontare questo problema è quello di introdurre una pausa molto breve da qualche parte nel calcolo (soprattutto in un favore o ciclo WHILE), come in:
for ii = 1:N
do_stuff();
pause(0.1);
end
Questo aumenta le probabilità che il vostro maniacale Ctrl-C'ing effettivamente fermarlo.
è possibile trovare il processo di MATLAB nel Task Manager di Windows e impostare la priorità alta o bassa e lasciare altro programma per avere la priorità inferiore o superiore. Nella mia esperienza, è un modo efficiente.
se voi non di fermarsi e replica poi uccidere non è cattiva scelta Vai a finestre dell'attività Manager-> Processi poi multato MATLAB.exe e premere il pulsante Termina processo