34 votes

Comment puis-je interrompre MATLAB quand il y a vraiment beaucoup de monde?

J'exécute une longue simulation dans MATLAB et je me suis rendu compte que je devais m'arrêter et recommencer. Cependant, MATLAB est vraiment dans ce calcul et il a cessé de répondre. Comment puis-je interrompre cette course sans tuer MATLAB?

(Je réalise que c'est un problème avec beaucoup de programmes Windows, mais c'est vraiment grave avec MATLAB.)

22voto

AVB Points 2924

Aller à la fenêtre de commande, et appuyez sur Ctrl-C beaucoup. De mon expérience, sur un single-core de la machine, vous n'avez pas de chance, à moins de faire beaucoup de sortie. Sur un multi-core ou machine multi-processeur, vous aurez probablement arrêter par la suite, mais il faut du temps.

Voir aussi http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html

Ajouté: c'est une bonne pratique (1) d'enregistrer un instantané de votre espace de travail avant de lancer quelque chose de très long et (2) à l'intérieur d'un très long calcul, écrire certaines des variables dans un fichier de temps en temps, de sorte que vous pouvez reprendre le calcul, si elle a été interrompue (par une panne de courant, par exemple).

19voto

Edric Points 11387

La capacité de MATLAB à réagir à CTRL-C dépend plutôt de ce qu’il fait. Si, par exemple, il se trouve au milieu d’un appel BLAS ou LAPACK, il ne répondra pas jusqu’au retour de cet appel. Si vous vous trouvez dans un bloc de code où de nombreuses lignes de MATLAB sont exécutées, vous pouvez vous attendre à ce que CTRL-C soit plus réactif.

6voto

J'ai eu un truc simple pour mettre en pause ou arrêter) un non-sensibles de l'exécution. Si ma simulation est en cours d'exécution d'une boucle longue je fais toujours la suivante:

for ii = 1:N
   do_stuff();
   clear empty_script;
   empty_script;
end

Puis de créer un fichier empty_script.m contenant les éléments suivants:

%keyboard

Chaque fois que je veux mettre en pause l'exécution j'ouvre un éditeur de texte externe et décommentez la ligne suivante: keyboard en empty_script.m. Qui me laisse en mode de débogage où je peux regarder des variables, modifier des trucs ou même arrêter le programme.

5voto

Doodles Points 73

Une autre stratégie pour traiter ce problème consiste à introduire une très courte pause quelque part dans le calcul (en particulier dans une boucle FOR ou WHILE), comme dans:

 for ii = 1:N
do_stuff();
pause(0.1);
end
 

Cela augmente les chances que votre maniaque Ctrl-C'ing l'arrête réellement.

1voto

user1284584 Points 11

vous pouvez trouver le processus MATLAB dans le gestionnaire de tâches Windows, définir la priorité haute ou basse et laisser l’autre programme avoir une priorité plus basse ou plus élevée. D'après mon expérience, c'est un moyen efficace.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X