Ipython: Tidak dapat menginterupsi infinite loop di notebook

Dibuat pada 13 Jan 2013  ·  29Komentar  ·  Sumber: ipython/ipython

Saya baru-baru ini memberikan pengantar pemrograman Python di Workshop tentang Genomics. Untuk tutorialnya, kami menggunakan antarmuka notebook dan diterima dengan sangat baik (terima kasih!). Selama diskusi tentang perulangan, saya meminta siswa untuk mengubah contoh perulangan for menjadi perulangan while. Dalam prosesnya banyak siswa membuat loop tak terbatas. Untuk beberapa siswa tersebut, Firefox membuat crash. Cara mengatasinya adalah dengan mematikan server notebook dan mematikan browser. Semua siswa menggunakan mesin virtual berbasis Ubuntu dan Firefox sebagai browser. Jika itu akan membantu, saya bisa mendapatkan detail lebih lanjut tentang sistem serta menyelidiki apakah saya dapat membuat ulang perilaku ini pada salinan mesin virtual saya.

needs-info

Komentar yang paling membantu

Saya pikir salah satu dari kita perlu menemukan notebook sederhana yang mereplikasi masalah ini, setidaknya pada beberapa sistem.

while True:
    print "foo"

Ini membuat Firefox menggunakan CPU 100% dan tidak responsif dengan cara atau bentuk apa pun. Membunuh Firefox dan proses IPython adalah satu-satunya cara untuk mengembalikan sistem.

Ipython 3.0.0
Firefox 42.0
Linux 3.13.0-24-generik

Semua 29 komentar

Akankah yang crash menghasilkan output dan bukan yang tidak membuat crash browser?
(Anda harus memiliki kernel pembunuh dalam satu menu)

Kita mungkin dapat memiliki batas waktu keikutsertaan keamanan yang mematikan server karena kernel tetap sibuk terlalu lama, atau frontend menerima terlalu banyak masukan

Saya pikir ada dua masalah di sini:

  • Menginterupsi infinite loop sangat mungkin dilakukan. Pada Kernel menu, klik interupsi.
  • Jika loop Anda mencetak sesuatu pada setiap langkah, itu akan menghasilkan sejumlah besar output, yang dapat menyebabkan masalah bagi browser. Lihat juga edisi # 1975.

@Carreau tidak ada keluaran

@takluyver menu kernel tidak responsif. Ini akan terjadi dengan loop yang dicetak dan loop yang tidak dicetak.

Bisakah Anda memberikan contoh loop yang tidak berfungsi?

Pada 13 Januari 2013 16:11, Daniel [email protected] menulis:

@Carreau https://github.com/Carreau tidak ada keluaran

@takluyver https://github.com/takluyver menu kernel tidak
responsif. Ini akan terjadi dengan loop yang sedang dicetak dan loop yang
tidak mencetak.


Balas email ini secara langsung atau lihat di Gi tHubhttps://github.com/ipython/ipython/issues/2781#issuecomment -12195606.

Algoritma anagram yang naif/mengerikan ketika kata-katanya bukan anagram satu sama lain

from random import shuffle 
word1 = list("quietx")
word2 = list("quite")
while word1 != word2:
    shuffle(word1)

Saya baru saja menguji, dan saya dapat menyela yang itu tanpa masalah di Firefox & Ubuntu. Bisakah Anda mereplikasinya dengan andal di sistem Anda?

Saya tidak dapat mereplikasinya di sistem saya. Saya akan melacak pengguna yang memiliki masalah dan menjalankan kembali di sistem mereka. Sesi lokakarya dilanjutkan besok pagi -- lokakarya ada di Eropa dan hari ini adalah hari libur -- jadi saya perlu waktu sebentar sebelum saya bisa kembali ke sini.

Saya tidak lagi dalam posisi untuk menguji ini dan tidak dapat menindaklanjuti di
bengkel. Mengingat bahwa saya tidak dapat mereproduksi masalah ini, begitu juga orang lain,
mari kita kapur itu sampai kebetulan.

Sekali lagi terima kasih atas tanggapannya yang cepat dan saya minta maaf karena memakan waktu ini

Pada hari Minggu, 13 Januari 2013 pukul 09:57, Thomas [email protected] :

Saya baru saja menguji, dan saya dapat menghentikannya tanpa masalah di Firefox
& Ubuntu. Bisakah Anda mereplikasinya dengan andal di sistem Anda?


Balas email ini secara langsung atau lihat di Gi tHubhttps://github.com/ipython/ipython/issues/2781#issuecomment -12196271.

Jangan khawatir. Jangan ragu untuk membuka kembali jika Anda menemukan cara untuk mereproduksi bug.

Saya mendapatkan ini sepanjang waktu di notebook IPython di chrome (dan saya baru saja mengujinya di firefox, dan "berhasil", yaitu macet). Saya _think_ itu terjadi setiap kali saya memiliki infinite loop yang sering dicetak. Ini masalah bagi saya, karena saya sering memasukkan pernyataan cetak untuk debug, dan dalam hal ini, saya kehilangan kode yang seharusnya memperbaiki bug saya karena crash.

Ini kode yang saya gunakan untuk membuatnya crash:

impor numpy sebagai np
x = np.array([0,1,2,3,4])
itu = np.nditer(x,flags=['f_index'])
sementara bukan itu.finished:
print it.index

Ini juga terjadi pada saya...
Pertama browser menjadi tidak responsif dan kemudian saya menemukan seluruh sistem hang. Saya terpaksa melakukan hard-reset.
Saya menggunakan Ubuntu dengan xfce desktop/firefox.
Jika itu akan membantu, saya bersedia membagikan detail lain yang mungkin Anda perlukan untuk memperbaikinya ...
@minrk

Masalah ini tampaknya masih ada!

Saya dapat menjalankan "interrupt" atau "Restart" dari menu kernel tetapi tidak berpengaruh sama sekali. ikon berlari masih ditampilkan sebagai bola hitam.

Bahkan jika saya me-restart komputer, setelah saya mengklik notebook lagi, itu akan berulang di sana selamanya!

Saya menggunakan MacBook dengan ipython 2.2.0 diinstal.

Saya juga mengalami masalah ini: notebook ipython tergantung di browser, dan tidak dapat memulihkan menggunakan kernel interupsi. Selain kesalahan loop, hal ini tampaknya terjadi dengan proses penggantungan apa pun, misalnya jika kueri internet dalam suatu fungsi hang karena alasan jaringan.

Pertanyaan saya adalah, apakah ada cara untuk mengakses kernel yang mendasarinya dari baris perintah? Saya meluncurkan notebook ipython dari terminal, dan saat ini solusi saya adalah dengan menginterupsi keyboard terminal itu, yang mematikan kernel sepenuhnya.

Saya juga memiliki masalah kritis ini. Tampaknya memang terkait dengan loop. Ini mencegah saya menjalankan simulasi panjang atau analisis data, yang berarti: Saya kacau...

Saya tidak tahu apakah ini terkait tetapi saya perhatikan bahwa setelah hang, hyperthreading tampaknya runtuh menjadi satu CPU yang masih berfungsi. Anda dapat melihatnya dengan menggunakan htop , misalnya. Pada awalnya, menurut saya hyperthreading (yang dieksploitasi oleh perpustakaan numpy -> BLAS di mesin saya) adalah yang mogok dan kemudian semuanya akan berjalan sangat lambat, tetapi kemudian saya mencoba untuk mengganggu dan tidak berhasil dan jadi saya menyadari itu adalah kernel IPython yang baru saja macet.

Masalah ini tidak pernah terjadi pada saya ketika:

  • Saya menggunakan mesin yang lebih tua (tetapi masih sangat mirip, hanya lebih sedikit RAM dan CPU)
  • Saya menggunakan ipython lama<3.0
  • Saya tidak mengerjakan notebook IPython jarak jauh

Dugaan saya yang terpelajar adalah:

  • masalah dengan beberapa soket di suatu tempat ...
  • backend utas matplotlib mengacaukan <-- tapi itu hanya karena mereka hampir selalu melakukannya, jadi lebih baik bertaruh;)

Ketika masalah terjadi, saya hanya me-restart kernel dari dalam antarmuka web dan melakukan kembali apa yang saya lakukan...

EDIT: sulit bagi saya juga untuk mereproduksinya tetapi saya perhatikan bahwa jika saya tidak menggunakan BLAS, misalnya jika saya tidak menggunakan produk titik numpy, masalahnya tidak muncul, meskipun saya harus menjalankan beberapa tes lagi untuk memverifikasi itu.

Saya juga melihat masalah ini cukup sering dan sulit untuk diselesaikan - jika ada banyak data yang memakan waktu untuk diproses di kernel, akan sangat merepotkan untuk mematikan semuanya dan memaksa memulai ulang. Jelas bukan bug imajiner :)

Saya juga memiliki masalah ini pada OSX + chrome.

@minrk , saya pikir ini mungkin layak untuk dibuka kembali. Saya tidak memiliki cukup privasi untuk membuka kembali tanpa membuat masalah baru.

Dari CLI sepertinya menekan tombol stop melakukan sesuatu, tetapi notebook tetap sama sekali tidak responsif.

[I 15:26:22.224 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:26:32.197 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:26:42.688 NotebookApp] Saving file at /Untitled.ipynb
[I 15:27:30.993 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:27:35.605 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:28:43.999 NotebookApp] Saving file at /Untitled.ipynb
[I 15:29:28.038 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee

Saya pikir salah satu dari kita perlu menemukan notebook sederhana yang mereplikasi masalah ini, setidaknya pada beberapa sistem. Kalau tidak, itu mungkin tidak bisa diperbaiki.

Saya juga melihat masalah ini.

Saya pikir salah satu dari kita perlu menemukan notebook sederhana yang mereplikasi masalah ini, setidaknya pada beberapa sistem.

while True:
    print "foo"

Ini membuat Firefox menggunakan CPU 100% dan tidak responsif dengan cara atau bentuk apa pun. Membunuh Firefox dan proses IPython adalah satu-satunya cara untuk mengembalikan sistem.

Ipython 3.0.0
Firefox 42.0
Linux 3.13.0-24-generik

Saya dapat mereproduksi dengan
ipython 3.2.0
python 2.7.10
Chrome Versi 46.0.2490.86 (64-bit)
OSX 10.10.5

Gangguan yang cukup besar bagi saya juga. Saya sering harus mematikan seluruh server notebook bersama dengan chrome karena masalah ini. Saya bisa sampai pada titik di mana saya mengklik tombol kernel interupsi dan itu menyoroti seolah-olah itu diklik, tetapi sesuatu, di suatu tempat tidak menerima pesan untuk berhenti.

Kesan awal saya adalah bahwa ini adalah masalah dengan mesin rendering teks chrome, tetapi saya hanya tahu sedikit tentang cara kerjanya.

Contoh kelambatan lainnya adalah ketika matplotlib yang relatif besar muncul di latar depan setelah menggulirnya. Seluruh notebook menjadi sangat gelisah selama 4-5 detik.

Untuk apa nilainya, saya menggunakan mesin yang cukup gemuk, jadi sangat aneh bahwa jupyter dapat membuat seluruh mesin saya bertekuk lutut.

9/10, itu terjadi secara tidak sengaja, jadi tidak semudah menyebutnya sebagai bug kesalahan pengguna.

Saya baru saja mengalami masalah ini (atau setidaknya cocok dengan profil yang dijelaskan di atas). Saya tidak bisa membuat jendela menjadi responsif secara teratur, tetapi _Saya bisa_ melakukan salinan clipboard yang sangat lambat dari seluruh halaman, yang memungkinkan saya untuk mempertahankan perubahan kode terbaru saya.

Bukan solusi untuk masalah, tetapi cara potensial untuk mengurangi konsekuensinya.

Saya memiliki masalah yang sama hari ini dan di masa lalu, menjalankan Linux Mint (18.0) dan firefox. Itu adalah generator count() yang sangat sederhana, tetapi saya mengacaukan __getitem__ dan, dengan cara yang konyol, mengatur cetakan pada kuncinya.

Versi terbaru dari paket kami menerapkan pembatasan keluaran, yang seharusnya mengurangi masalah dengan keluaran dalam jumlah besar yang memperlambat browser.

Penutupan karena masalah ini tidak ada di IPython itu sendiri dan jika masih bermasalah dan relevan harus dibuka di repositori yang tepat. Ini akan memungkinkan untuk menjaga jumlah masalah yang dibuka pada repo IPython terkendali.

Jangan ragu untuk terus berkomentar atau membuka kembali jika perlu.

Terima kasih.

@Carreau , apakah Anda memiliki repositori yang disarankan (atau apakah ini tidak terbawa ke tempat masalah notebook dilacak ...)?

Itu perlu dimigrasikan ke jupyter/notebook atau jupyterlab/jupyterlab. Kemungkinan kedua jika itu mempengaruhi jupyterlab juga.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat