Como posso interromper MATLAB quando fica realmente muito ocupado?
-
18-09-2019 - |
Pergunta
Estou executando uma longa simulação em MATLAB que eu percebi que eu preciso parar e execute novamente. No entanto, MATLAB é realmente para este cálculo, e ele parou de responder. Como posso interromper este prazo sem matar MATLAB?
(Sei que este é um problema com muitos programas do Windows, mas é realmente aguda com MATLAB).
Solução
Vá para a janela de comando, e pressione Ctrl-C muito. Da minha experiência, em uma máquina de single-core você não tem uma chance, a menos que você fazer muita saída. Em uma máquina multi-processador multi-core ou, você provavelmente vai pará-lo eventualmente, mas isso leva tempo.
Veja também http: //www.mathworks. com / support / soluções / en / data / 1-188VX / index.html
Adicionado : é uma boa prática (1) salvar um instantâneo de seu espaço de trabalho antes de executar qualquer coisa realmente longa e (2) dentro de um tempo muito longo de cálculo, escrever algumas das variáveis ??em um arquivo de vez em quando, para que você possa retomar o cálculo se ele foi interrompida (por falta de energia, por exemplo).
Outras dicas
Como bem MATLAB responde a CTRL-C, em vez depende do que ele está fazendo. Se ele está no meio de uma chamada BLAS ou LAPACK por exemplo, ele não responderá até que a chamada retorna. Se você estiver em um bloco de código em que lotes de linhas de MATLAB estão sendo executadas, você pode esperar CTRL-C para ser mais ágil.
Eu tenho um truque muito simples pausa (ou parar) uma execução não-responsivos. Se minha simulação está sendo executado um loop tempo eu sempre fazer o seguinte:
for ii = 1:N
do_stuff();
clear empty_script;
empty_script;
end
E, em seguida, criar um empty_script.m
arquivo contendo o seguinte:
%keyboard
Sempre que eu quero pausar a execução eu abrir um editor de texto externo e descomente a linha dizendo keyboard
em empty_script.m
. Isso deixa-me no modo onde posso assistir variáveis, modificar o material ou mesmo parar o programa de depuração.
Outra estratégia para lidar com este problema é a introdução de um período muito curto em algum lugar pausa no cálculo (especialmente em um loop for ou while), como em:
for ii = 1:N
do_stuff();
pause(0.1);
end
Isso aumenta as chances de que seu maníaco Ctrl-c'ing vão realmente pará-lo.
Você pode encontrar o processo de MATLAB no gerenciador de tarefas do Windows e definir a prioridade como alta ou baixa e deixe outro programa para ter maior ou menor prioridade. Na minha experiência, é uma maneira eficiente.
Se você não vai parar e executar novamente, em seguida, matar não é má escolha Ir para tarefas do Windows gerente-> Processos então multado MATLAB.exe e aperte o botão Finalizar Processo