Como fechar o notebook IPython corretamente?

110

Como fechar o notebook IPython corretamente?

Atualmente, eu apenas fecho as guias do navegador e uso Ctrl+Cno terminal.
Infelizmente, exit()nem o tique nem Kill kernel upon exito tick ajudam (eles matam o kernel, mas não saem do iPython).

Piotr Migdal
fonte
O PID de um kernel específico (aberto em uma porta específica) pode ser visto com ps -axou top. Assim, os kernels podem ser interrompidos seletivamente com [privilégio administrativo] para encerrar esse processo em particular: # kill PID-of-ki Isso não permite procedimentos internos de desligamento para o kernel, mas também não faz o tipo Ctl-C forçado ... Alguém sabe se isso está planejado para Jupyter?
Dr. C de

Respostas:

119

Atualmente, não há uma maneira melhor de fazer isso do que Ctrl + C no terminal.

Estamos pensando em como ter um desligamento explícito, mas há alguma tensão entre o notebook como um aplicativo de usuário único, onde o usuário é livre para interrompê-lo, e como um servidor multiusuário, onde apenas um administrador deve ser capaz para pará-lo. Ainda não descobrimos como lidar com as diferenças.

(Para leitores futuros, esta é a situação com 0,12 lançado e 0,13 em desenvolvimento.)

Atualização de dezembro de 2017

O Notebook IPython se tornou o Notebook Jupyter. Uma versão recente adicionou um jupyter notebook stopcomando shell que desligará um servidor em execução naquele sistema. Você pode passar o número da porta na linha de comando se não for a porta 8888 padrão.

Você também pode usar o nbmanager , um aplicativo de desktop que pode mostrar servidores em execução e desligá-los.

Por fim, estamos trabalhando para adicionar:

  • Uma opção de configuração para desligar automaticamente o servidor se você não usá-lo por um tempo específico.
  • Um botão na interface do usuário para desligar o servidor. (Sabemos que é um pouco louco que tenha demorado tanto. Mudar a IU é controverso.)
Thomas K
fonte
1
Talvez então apenas ofereça uma opção para permitir o kill explícito (através de um botão no menu?) Ou não no arquivo de configuração e linha de comando? Para que as pessoas que desejam que o servidor sempre execute, podem apenas definir a configuração correta.
magnífico
7
Já se passaram alguns anos, essa situação mudou? Ctrl + C ainda é a única maneira segura de desligar um servidor iPython Notebook?
EFC
Ainda não há uma maneira de desligá-lo de dentro da IU do notebook, mas escrevi o nbmanager , uma ferramenta que pode listar e matar servidores e kernels de notebook.
Thomas K
Portanto, suponho que usar jupyter notebook &é uma má ideia, pois Ctrl+ Cnão se aplica a esta situação
Naveen Dennis
Tentei fazer isso, mas não há como digitar nada no console que esteja executando o processo do Jupyter Notebook além de ctrl + C. Tentei abrir um novo prompt de comando / PowerShell e digitar jupyter notebook pare a partir daí, mas não funcionou.
julianhatwell
24

Se você executar o jupyter em segundo plano como eu:

jupyter notebook &> /dev/null &

Em seguida, para sair do jupyter completamente, em vez de Ctl-C, faça um comando alias:

echo 'alias quitjupyter="kill $(pgrep jupyter)"' >> ~/.bashrc

Reinicie seu terminal. Elimine todas as instâncias do jupyter:

quitjupyter

Nota: use aspas duplas entre aspas simples, conforme mostrado acima. A outra maneira avaliará a expressão antes de gravá-la em seu .bashrc (você deseja escrever o comando em si, não 'kill 1430' ou qualquer número de processo que possa estar associado a uma instância jupyter atual). Claro que você pode usar qualquer apelido que desejar. Na verdade, eu uso 'qjup':

echo 'alias qjup="kill $(pgrep jupyter)"' >> ~/.bashrc

Reinicie seu terminal. Elimine todas as instâncias do jupyter:

qjup
BBW antes do Windows
fonte
O kill $(pgrep jupyter)por si só é excelente. Eu estava correndo jupyter notebookde um terminal remoto que travou - a abordagem CTRL + C é impossível ao fazer o login novamente. Salvar a opção nuclear de reiniciar remotamente, isso é ótimo.
MichaelChirico
2
Por que não apenas pkill jupyter? pkillé pgreb, mas para matar processos.
rmstmppr
21

Acho que a resposta aceita está desatualizada e não é mais válida.

Você pode encerrar o notebook jupyter da interface da web no item de menu de arquivo.

insira a descrição da imagem aqui

Quando você move o cursor do mouse em "fechar e parar", você verá a seguinte explicação.

insira a descrição da imagem aqui

E quando você clicar em "fechar e parar", você verá a seguinte mensagem na tela do terminal.

insira a descrição da imagem aqui

wasabi
fonte
15
Para esclarecer, isso interrompe o kernel , o processo que executa seu código Python. Não para o servidor do notebook , que faz as interfaces do notebook, lida com o carregamento e salvamento de arquivos, etc.
Thomas K
10

O primeiro passo é salvar todos os cadernos abertos. E então pense em desligar seu Jupyter Notebook. Você pode usar este comando simples:

$ jupyter notebook stop 
Shutting down server on port 8888 ...

O que também leva o número da porta como argumento e você pode desligar o notebook jupyter normalmente.

Por exemplo:

jupyter notebook stop 8889 
Shutting down server on port 8889 ...

Além disso, para saber sua instância juypter atual em execução, verifique o comando abaixo:

shell> juypter notebook list 
Currently running servers:
http://localhost:8888/?token=ef12021898c435f865ec706d7c9af8607a7ba58bbee98632 :: /Users/username/jupyter-notebooks [/code]
Moronkreacionz
fonte
7

Esses comandos funcionaram para mim:

jupyter notebook list # shows the running notebooks and their port-numbers
                      # (for instance: 8080)
lsof -n -i4TCP:[port-number] # shows PID.
kill -9 [PID] # kill the process.

Esta resposta foi adaptada a partir daqui .

PatriceG
fonte
5

Tente matar o processo pythonw do Gerenciador de Tarefas (se Windows) se nada mais funcionar.

fixxxer
fonte
4
Linux (Ubuntu 14.04)

Como mencionado, tente encerrar os processos do notebook ipython apropriadamente indo primeiro para a guia "running" na sessão do navegador ipynb / jupyter e, em seguida, verifique os terminais abertos em seu console e desligue com ctrl-c. Este último deve ser evitado, se possível.

Se você executar um ipython notebook liste continuar a ver os servidores ipython em execução em portas diferentes, anote para quais portas os notebooks existentes estão sendo servidos. Em seguida, desligue suas portas TCP:

fuser -k 'port#'/tcp 

Não tenho certeza se existem outros riscos envolvidos em fazer isso. Se sim, me avise.

Soham
fonte
2

Meio Ambiente


Meu sistema operacional é Ubuntu 16.04 e jupyter é 4.3.0.

Método


Primeiro, eu desconectei o jupyter em sua página inicial no navegador (o botão de logout está no canto superior direito)

Em segundo lugar, digite em Ctrl + Cseu terminal e ele mostra:

[I 15: 59: 48.407 NotebookApp] interrompido Servindo notebooks do diretório local: / home / Username 0 kernels ativos

O Jupyter Notebook está sendo executado em: http: // localhost: 8888 /? Token = a572c743dfb73eee28538f9a181bf4d9ad412b19fbb96c82

Desligar este servidor de notebook (s / [n])?

Última etapa, digite em y5 segundos e se mostrar:

[C 15: 59: 50.407 NotebookApp] Desligamento confirmado
[I 15: 59: 50.408 NotebookApp] Desligamento de kernels

Parabéns! Você fecha seu jupyter com sucesso.

WY Hsu
fonte
2

Na verdade, eu acredito que há uma maneira mais limpa do que matar o (s) processo (s) usando o kill ou o gerenciador de tarefas.

No Painel do Notebook Jupyter (a interface do navegador que você vê ao iniciar o 'notebook jupyter' pela primeira vez), navegue até o local dos arquivos do notebook que você fechou no navegador, mas cujos kernels ainda podem estar em execução.

Os arquivos do iPython Notebook aparecem com um ícone de livro, mostrado em verde se tiver um kernel em execução ou cinza se o kernel não estiver em execução.

Basta selecionar a caixa de seleção ao lado do arquivo em execução e clicar no botão Desligar que aparece acima dele.

Isso desligará corretamente o kernel associado a esse bloco de notas específico.

Andrew Medlin
fonte
0

Na sessão do navegador, você também pode acessar Kernele clicar em Restart and Clear Output.

Susanna Maier
fonte
0

Estou copiando e colando da Documentação do Guia de início rápido do Jupyter / IPython Notebook, lançado em 13 de fevereiro de 2018. http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html

1.3.3 Fechar um bloco de notas: desligamento do kernel Quando um bloco de notas é aberto, seu “mecanismo computacional” (chamado kernel) é iniciado automaticamente. Fechar a guia do navegador do notebook não desligará o kernel; em vez disso, o kernel continuará funcionando até que seja explicitamente desligado. Para desligar um kernel, vá ao bloco de notas associado e clique no menu Arquivo -> Fechar e parar. Alternativamente, o Notebook Dashboard tem uma guia chamada Running que mostra todos os notebooks em execução (ou seja, kernels) e permite desligá-los (clicando no botão Desligar).

Resumo: Primeiro feche e interrompa a execução dos notebooks.

1.3.2 Desligue o Jupyter Notebook App Fechar o navegador (ou a guia) não fecha o Jupyter Notebook App. Para encerrá-lo completamente, você precisa fechar o terminal associado. Em mais detalhes, o Jupyter Notebook App é um servidor que aparece em seu navegador em um endereço padrão ( http: // localhost: 8888 ). Fechar o navegador não encerrará o servidor. Você pode reabrir o endereço anterior e o aplicativo Jupyter Notebook será exibido novamente. Você pode executar muitas cópias do Jupyter Notebook App e elas aparecerão em um endereço semelhante (apenas o número após “:”, que é a porta, será incrementado a cada nova cópia). Uma vez que com um único Jupyter Notebook App você já pode abrir muitos notebooks, não recomendamos executar várias cópias do Jupyter Notebook App.

Resumo: Em segundo lugar, saia do terminal a partir do qual você disparou o Jupyter.

Subhrajit Bhattacharya
fonte
0

Etapa 1 - No shell, basta fazer control + z (control + c) Etapa 2 _ fechar o navegador da web

Reihan_amn
fonte