Как я могу прервать MATLAB, когда он очень занят?

StackOverflow https://stackoverflow.com/questions/2404384

  •  18-09-2019
  •  | 
  •  

Вопрос

Я запускаю длинную симуляцию в МАТЛАБ что я понял, что мне нужно остановиться и начать заново.Однако MATLAB действительно увлекся этим расчетом и перестал отвечать.Как я могу прервать этот запуск, не убивая MATLAB?

(Я понимаю, что это проблема многих программ Windows, но в MATLAB она особенно остра.)

Это было полезно?

Решение

Перейдите в командное окно и нажмите Ctrl-C.По моему опыту, на одноядерной машине у вас нет шансов, если вы не выполняете большой объем вывода.На многоядерной или многопроцессорной машине вы, вероятно, в конце концов остановите его, но это требует времени.

Смотрите также http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html

Добавлен:хорошей практикой является (1) сохранять снимок вашего рабочего пространства перед выполнением чего-либо действительно длительного и (2) в течение очень длительного расчета время от времени записывать некоторые переменные в файл, чтобы вы могли возобновить расчет. если оно было прервано (например, из-за сбоя питания).

Другие советы

Насколько хорошо MATLAB реагирует на сочетание клавиш CTRL-C, скорее, зависит от того, что он делает.Например, если он находится в середине вызова BLAS или LAPACK, он не ответит, пока этот вызов не вернется.Если вы находитесь в блоке кода, где выполняется множество строк MATLAB, вы можете ожидать, что сочетание клавиш CTRL-C будет более отзывчивым.

У меня есть очень простой способ приостановить (или остановить) не отвечающее выполнение.Если моя симуляция выполняется в длинном цикле, я всегда делаю следующее:

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

И затем создайте файл empty_script.m содержащий следующее:

%keyboard

Всякий раз, когда я хочу приостановить выполнение, я открываю внешний текстовый редактор и раскомментирую строку, в которой говорится: keyboard в empty_script.m.Это оставляет меня в режиме отладки, где я могу наблюдать за переменными, изменять что-либо или даже останавливать программу.

Другая стратегия решения этой проблемы — ввести очень короткую паузу где-нибудь в расчете (особенно в циклах FOR или WHILE), например:

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

Это увеличивает вероятность того, что ваше маниакальное сочетание клавиш Ctrl-C действительно остановит это.

вы можете найти процесс MATLAB в диспетчере задач Windows, установить высокий или низкий приоритет и позволить другой программе иметь более низкий или более высокий приоритет.По моему опыту, это эффективный способ.

Если вы не остановитесь и повторяете, то убийство не является плохим выбором. Перейдите к Windows Task Manager-> Процессы, затем оштрафован Matlab.exe и нажмите кнопку процесса конечного процесса

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top