Ketika subproses dijalankan dari notebook, jika macet, kernel akan terkunci menunggunya. Memilih Kernel/Interrupt dari menu tidak menghentikan subproses, melainkan meninggalkan kernel dalam keadaan tidak stabil, "terkunci sebagian", di mana sel-sel lain tidak dieksekusi. Satu-satunya resolusi adalah me-restart kernel.
Ini terjadi pada saya di Windows - saya tidak tahu apakah itu juga terjadi di Unix.
Untuk mendemonstrasikan, mulai buku catatan dan masukkan !python dalam sel. Proses akan terkunci saat menunggu input interaktif. Karena tidak ada cara untuk memberikan input tersebut, kernel harus di-restart untuk melanjutkan.
duplikat #514
Terima kasih, saya tidak melihat duplikatnya. Karena itu, t#514 sedang mendiskusikan skenario yang jauh lebih kompleks, yang melibatkan interaksi nyata dengan subproses (dan tampaknya berbasis Unix, karena ini tentang interaksi gaya pty). Untuk persyaratan saya, cara sederhana untuk membunuh subproses nakal akan dilakukan. Pertimbangkan sesuatu yang sederhana seperti !sleep 50000
, di mana hanya bisa mematikan tidur adalah yang Anda inginkan. (Mungkin Ctrl-C berfungsi untuk ini di Unix, tetapi tidak di Windows).
Maaf, saya mengerti maksud Anda sekarang. Pembukaan kembali sebagai masalah terpisah - interupsi tidak mengganggu subproses di Windows.
Saya tidak yakin ini terbatas pada subproses. Coba jalankan input()
atau raw_input()
dan kemudian klik tombol interupsi--kernel hang dan harus di-restart.
@arijun di OS apa? mengganggu input dan raw_input meningkatkan KeyboardInterrupt di sini (OS X).
Maaf, jendela. Itu sebabnya saya pikir itu kemungkinan masalah yang sama yang dimiliki @pfmoore , karena itu juga terjadi di windows.
Ah, sial. Aku tahu apa itu bug. Saya pikir ini adalah bug libzmq (atau pyzmq) yang mencegahnya menangani interupsi dengan benar saat melakukan polling pada soket zmq. Tidak ada apa-apa di IPython. _mendesah_
Saya pikir saya baru saja digigit oleh ini dan saya harus me-restart kernel, artinya saya baru saja kehilangan banyak data…
Saya menggunakan pdb
untuk men-debug suatu fungsi. Saya menjalankan ulang sel tanpa terlebih dahulu keluar dari pdb
, dan sekarang saya tidak dapat menginterupsi apa pun.
Berikut adalah contoh minimal yang mereproduksi ini:
def test():
import pdb; pdb.set_trace() # XXX BREAKPOINT
return 0
test()
Jalankan sel ini dua kali berturut-turut.
Masalah yang sama ini terjadi pada saya di Unix juga kata demi kata.
"Ketika subproses dijalankan dari notebook, jika macet, kernel akan dikunci menunggunya. Memilih Kernel/Interrupt dari menu tidak menghentikan subproses, melainkan membiarkan kernel dalam keadaan tidak stabil, "terkunci sebagian" , di mana sel lain tidak dieksekusi. Satu-satunya resolusi adalah me-restart kernel."
Terima kasih atas contoh bagus dari pdb hang, wmayner. Tetapi karena pdb tidak berjalan dalam subproses, saya membuka masalah terpisah untuk pdb: #10516
Mencetak terlalu banyak data, katakanlah secara tidak sengaja mencetak array numpy raksasa, dapat membuat kernel benar-benar tidak responsif dan tidak mungkin dihentikan
Apakah solusi untuk masalah ini sudah ditemukan? saya baru saja menjalankan model pembelajaran mesin yang membutuhkan waktu 14 jam untuk diselesaikan dan sekarang kernel saya macet dan tidak menjalankan sel. jika saya restart, saya harus menjalankan model lagi selama 14 jam. Jadi apakah ada solusi?
belum mencobanya, tetapi ini sepertinya bisa membantu: http://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/limit_output/readme.html
Jika subproses tertentu macet, Anda mungkin dapat menemukannya di pengelola tugas dan secara paksa mematikannya seperti itu. Semoga itu memungkinkan kernel terus berlanjut.
tidak, masalahnya adalah kernel mengirim spam ke server web sampai mati atau semacamnya. membunuh server web membunuh kernel afaik
Saya juga berurusan dengan notebook yang macet: interupsi, mulai ulang, sambungkan kembali - tidak ada yang melakukan apa pun. Indikator [*]
tetap berada di sebelah sel seolah-olah mereka antri untuk dijalankan tetapi tidak ada sel yang dieksekusi.
Perilaku dimulai setelah menjalankan sel yang berisi:
filedir = "20161214_rooftest"
!ls -RC $filedir
Yang aneh karena saya memiliki sel analog di tempat lain yang berjalan dengan sukses. Saya tidak yakin bagaimana/jika ls
bisa macet tetapi sebaliknya situasi saya tampaknya cocok dengan masalah ini.
Apakah ada solusi untuk ini. Kernal tidak dapat diinterupsi.
Bagi saya itu terjadi dengan GridSearchCV di sklearn .
Ada proses bernama conda.exe di Task manager. Saya mematikan proses itu dan saya berhasil menginterupsi kernel
Interupsi masih rusak. Saya harus memulai ulang dan memuat ulang impor saya setiap saat.
masalah yang sama di lab jupyter pada kernel python 3.7
masalah yang sama di Jupyter Notebook dan saya tidak dapat menemukan proses bernama conda.exe di Task manager. Sudah ada update solusi belum?
Bukan solusi
Terkadang mencoba menyambung kembali ke kernel membantu dalam kasus ini
Mengamati hal yang sama, di Windows 10
Apakah ada yang berhasil dalam hal itu? aku menjadi gila
Ada proses bernama conda.exe di Task manager. Saya mematikan proses itu dan saya berhasil menginterupsi kernel
@ahmedrao Bagaimana????
Masalah ini sudah ada selama enam tahun dan masih belum ada solusi.
Masalah ini sudah ada selama enam tahun dan masih belum ada solusi.
enam tahun tanpa solusi apa pun, cukup restart kernel
Memiliki masalah yang sama semakin sering, hampir sampai pada titik di mana notebook menjadi tidak dapat digunakan yang sangat disayangkan. Pada Anaconda 3.7 dan sel hanya menggantung dengan tanda bintang, dan saya tidak dapat menginterupsi kernel.
Tandai Masalah yang Sama
Selalu mengalami masalah ini terutama dengan dbg dan input.
Windows 10; Server buku catatan 5.7.8; Python 3.6.6.; Konda 4.7.5
Telah belajar bahwa pada dasarnya saya tidak dapat men-debug Notebook dengan andal :(
ya, masalahnya masih ada. Apakah ada cara untuk mengatasi ini?? Saya tidak ingin menjalankan notebook saya lagi , karena terlalu lama untuk sampai ke tempat saya !!
Ke atas!
Masalah ini telah menyusahkan saya selama bertahun-tahun sekarang setiap kali saya menggunakan pdb dan lupa untuk berhenti sebelum saya menjalankan kembali sel.
Saya membuat hadiah di BountySource. Mungkin ini akhirnya akan diperbaiki jika kita bisa mengumpulkan cukup uang.
https://www.bountysource.com/issues/44958889-hang-after-running-pdb-in-a-cell-kernel-interrupt-doesn-t-help
Untuk masalah proses secara khusus, pada Windows secara khusus, inilah teori (masih belum teruji):
IPython.utils._process_win32.system
, yang memanggil _system_body
, yang memanggil p.wait()
pada objek subprocess.Popen
.subprocess.Popen.wait()
memiliki masalah umum yang tidak dapat diganggu: https://bugs.python.org/issue28168Jika itu penyebabnya, beralih ke perulangan sibuk setiap 100 ms atau lebih mungkin akan membuatnya terganggu, atau jika tidak maka mengambil pendekatan di tambalan.
Terima kasih @Carreau!
Terima kasih @Carreau! Kapan ini akan menemukan jalannya ke rilis umum, dan apakah itu berarti bahwa kita kemudian dapat menggunakan tombol Interrupt Kernel dengan sukses?
Saya mungkin akan melakukan 7.13 besok. Mungkin memperbaiki tombol interupsi.
Hai @Carreau
Saya menghadapi masalah ini ketika saya mencoba untuk mengganggu eksekusi sel yang sedang berlangsung, interupsi berlangsung selamanya dan akhirnya saya harus memulai ulang.
Jadi untuk menunjukkan, seperti yang disarankan @wmayner cara untuk mereplikasi masalah. Saya telah melampirkan beberapa tangkapan layar untuk hal yang sama.
Versi Jupyter di mesin saya.
@Arpit-Gole pdb adalah masalah spesifiknya sendiri; Saya berharap untuk segera memperbaikinya juga: https://github.com/ipython/ipython/issues/10516
@itamarst Saya melatih model sebagai berikut:
forest_clf = RandomForestClassifier()
cross_val_score(forest_clf, X_train, y_train, cv=3, scoring='accuracy', verbose=10, n_jobs=-1)
Sekarang saya tahu itu pasti akan memakan waktu berdasarkan dataset saya. Tetapi katakan untuk alasan apa pun saya memilih untuk menghentikan pemrosesan setengah jalan dengan menekan Kernel>Interrupt Kernel .
Idealnya, itu harus mengganggu tetapi butuh selamanya untuk berhenti.
Sekarang saya tidak ingin memulai ulang karena semua kemajuan saya akan hilang.
Tolong bantu!
Jika apa yang Anda coba interupsi diimplementasikan dalam C maka tidak ada yang bisa dilakukan. Terserah perpustakaan yang Anda gunakan untuk menangani signint.
Saya juga terkadang mengalami hal ini... Berikut adalah contoh yang dapat direproduksi dari jupyer lab:
import requests
import pandas as pd
url='https://raw.githubusercontent.com/numenta/NAB/master/data/realKnownCause/nyc_taxi.csv'
r = requests.get(url, allow_redirects=True)
with open('data/nyc_taxi.csv', 'wb') as f:
f.write(r.content)
df_taxi = (
pd.read_csv('data/nyc_taxi.csv')
.assign(timestamp=lambda x: pd.to_datetime(x.timestamp))
)
df_train = df_taxi.iloc[:5000]
temp_train = df_train.set_index('timestamp')
import itertools
#set parameter range
p = range(0,3)
q = range(1,3)
d = range(1,2)
s = [24,48]
# list of all parameter combos
pdq = list(itertools.product(p, d, q))
seasonal_pdq = list(itertools.product(p, d, q, s))
# SARIMA model pipeline
for param in pdq:
for param_seasonal in seasonal_pdq:
try:
mod = sm.tsa.statespace.SARIMAX(temp_train[:240],
order=param,
seasonal_order=param_seasonal)
results = mod.fit(max_iter = 50, method = 'powell')
print('SARIMA{},{} - AIC:{}'.format(param, param_seasonal, results.aic))
except as e:
print(e)
continue
Apakah ada saran?
mengalami masalah ini tiga kali sore ini, mengingatkan saya pada masa lalu yang indah ketika saya masih menggunakan urllib.
pikir itu di urllib, karena tidak ada tanggapan atas permintaan saya.
Saya bekerja tetapi coding, saya harus menemukan solusi tetapi jawaban. Jadi saya menyimpan setiap variabel ke file lokal.
benar-benar tidak ingin melihat itu terjadi lagi dan lagi.
Saya menghadapi masalah yang sama saat menggunakan tensorflow dan GPU untuk melatih model pembelajaran mendalam.
Jalani ini dengan waktu. tidur dan permintaan
Juga mengalami masalah dengan permintaan time.sleep di Windows, tetapi berjalan dengan baik di Mac OS X
Mengalami masalah dengan ThreadPoolExecutor... Sesuatu seperti ini:
numberOfImageGatherers = 2
with concurrent.futures.ThreadPoolExecutor(max_workers=numberOfImageGatherers + 1) as executor:
futures = []
for imageGatherer in range(numberOfImageGatherers):
imageDataGatherer = ImageDataGatherer(batch_size)
futures.append(executor.submit(imageDataGatherer.gatherImageData, pipeline))
modelTrainingConsumer = ModelTrainingConsumer(vae, plot_losses)
futures.append(executor.submit(modelTrainingConsumer.trainModel, pipeline))
concurrent.futures.wait(futures)
Satu-satunya cara untuk menginterupsi adalah dengan me-restart kernel... sangat membuat frustrasi
Komentar yang paling membantu
Saya pikir saya baru saja digigit oleh ini dan saya harus me-restart kernel, artinya saya baru saja kehilangan banyak data…
Saya menggunakan
pdb
untuk men-debug suatu fungsi. Saya menjalankan ulang sel tanpa terlebih dahulu keluar daripdb
, dan sekarang saya tidak dapat menginterupsi apa pun.Berikut adalah contoh minimal yang mereproduksi ini:
Jalankan sel ini dua kali berturut-turut.