Saya sudah mulai menggunakan Notebook IPython dan saya menikmatinya. Terkadang, saya menulis kode buggy yang membutuhkan kebutuhan memori yang sangat besar atau memiliki loop tak terbatas. Saya menemukan opsi "kernel interupsi" lamban atau tidak dapat diandalkan, dan terkadang saya harus memulai ulang kernel, kehilangan semua yang ada di memori.
Saya juga terkadang menulis skrip yang menyebabkan OS X kehabisan memori, dan saya harus melakukan boot ulang yang sulit. Saya tidak 100% yakin, tetapi ketika saya menulis bug seperti ini sebelumnya dan menjalankan Python di terminal, saya biasanya CTRL+ Cskrip saya.
Saya menggunakan distribusi Anaconda dari notebook IPython dengan Firefox di Mac OS X.
python
ipython
jupyter-notebook
wwwilliam.dll
sumber
sumber
Jawaban:
Saya bisa saja salah, tetapi saya cukup yakin bahwa tombol "interupsi kernel" hanya mengirimkan sinyal SIGINT ke kode yang sedang Anda jalankan (ide ini didukung oleh komentar Fernando di sini ), yang sama dengan yang mengenai CTRL + C sudah cukup. Beberapa proses dalam python menangani SIGINT lebih tiba-tiba daripada yang lain.
Jika Anda sangat ingin menghentikan sesuatu yang sedang berjalan di Notebook iPython dan Anda memulai Notebook iPython dari terminal, Anda dapat menekan CTRL + C dua kali di terminal itu untuk menghentikan seluruh server Notebook iPython. Ini akan menghentikan semua Notebook iPython, yang berarti tidak mungkin untuk memulai ulang atau menyimpan pekerjaan Anda, jadi ini jelas bukan solusi yang bagus (Anda perlu menekan CTRL + C dua kali karena ini adalah fitur keamanan sehingga orang tidak melakukannya secara tidak sengaja). Dalam keadaan darurat, bagaimanapun, ini biasanya mematikan proses lebih cepat daripada tombol "interrupt kernel".
sumber
Kernel
dropdown atau dari halaman server buku catatan (Shutdown
tombol di sebelah kanan nama buku catatan yang melanggar).jupyter-console
? II / control-c tidak berfungsi. Dan tidak ada jalan pintas lain untuk merestart kernel.Anda dapat menekan
I
dua kali untuk menghentikan kernel.Ini hanya berfungsi jika Anda dalam mode Command. Jika belum diaktifkan, tekan Escuntuk mengaktifkannya.
sumber
Berikut adalah cara pintas untuk Notebook IPython.
Ctrl-m i
menyela kernel. (yaitu, satu-satunya huruf i setelahCtrl-m
)Menurut jawaban ini ,
I
dua kali bekerja juga.sumber
Untuk menambahkan di atas: Jika interupsi tidak berfungsi, Anda dapat memulai ulang kernel.
Buka dropdown kernel >> restart >> restart dan hapus output. Ini biasanya berhasil. Jika ini masih tidak berhasil, matikan kernel di terminal (atau pengelola tugas) dan kemudian restart.
Interupsi tidak berfungsi dengan baik untuk semua proses. Saya terutama memiliki masalah ini menggunakan kernel R.
sumber
UPDATE : Mengubah solusi saya menjadi skrip python yang berdiri sendiri.
Solusi ini telah menyelamatkan saya lebih dari sekali. Semoga bermanfaat bagi orang lain. Skrip python ini akan menemukan kernel jupyter yang menggunakan lebih dari
cpu_threshold
CPU dan meminta pengguna untuk mengirimSIGINT
ke kernel (KeyboardInterrupt). Ini akan terus dikirimSIGINT
sampai penggunaan cpu kernel di bawah inicpu_threshold
. Jika ada beberapa kernel yang berperilaku tidak semestinya, pengguna akan diminta untuk menghentikannya masing-masing (diurutkan berdasarkan penggunaan CPU tertinggi hingga terendah). Terima kasih banyak kepada gcbeltramini karena telah menulis kode untuk menemukan nama kernel jupyter menggunakan api jupyter. Skrip ini telah diuji pada MACOS dengan python3 dan membutuhkan notebook jupyter, request, json dan psutil.Letakkan skrip di direktori beranda Anda dan kemudian penggunaannya terlihat seperti:
Kode skrip di bawah ini:
sumber