サブプロセスがノートブックから実行されるとき、それがスタックすると、カーネルはそれを待ってロックされます。 メニューからカーネル/割り込みを選択しても、サブプロセスは終了しませんが、カーネルは不安定な「部分的にロックされた」状態のままになり、他のセルは実行されません。 唯一の解決策は、カーネルを再起動することです。
これはWindowsで発生しました-Unixでも発生するかどうかはわかりません。
デモンストレーションを行うには、ノートブックを起動し、セルに!pythonと入力します。 インタラクティブな入力を待っている間、プロセスはロックされます。 その入力を提供する方法がないため、続行するにはカーネルを再起動する必要があります。
#514の複製
おかげで、私は重複を見つけていませんでした。 そうは言っても、t#514は、実際にサブプロセスと相互作用することを含む、はるかに複雑なシナリオについて議論しています(そして、ptyスタイルの相互作用に関するものであるため、Unixベースのようです)。 私の要件では、不正なサブプロセスを強制終了する簡単な方法で十分です。 !sleep 50000
ような単純なものを考えてみてください。ここでは、睡眠を殺すことができれば十分です。 (たぶん、Ctrl-CはUnixでこれに対して機能しますが、Windowsでは機能しません)。
すみません、あなたが今何を意味しているのかわかります。 別の問題として再開する-Windowsのサブプロセスを中断しないで中断します。
これがサブプロセスに限定されているかどうかはわかりません。 input()
またはraw_input()
を実行してから、割り込みボタンをクリックしてみてください。カーネルがハングし、再起動する必要があります。
どのOSで@arijun ? inputとraw_inputを中断すると、ここでKeyboardInterruptが発生します(OSX)。
すみません、窓。 そのため、 @ pfmooreと同じ問題が発生した可能性が高いと考えました。これは、Windowsでも発生したためです。
ああ、がらくた。 私はそのバグが何であるかを知っています。 zmqソケットでのポーリング中に割り込みを適切に処理できないのは、libzmq(またはpyzmq)のバグだと思います。 IPythonでは何もありません。 _はぁ_
これに噛まれたばかりで、カーネルを再起動する必要があると思います。つまり、大量のデータが失われただけです…
pdb
を使用して関数をデバッグしていました。 最初にpdb
を終了せずにセルを再実行しましたが、今は何も中断できません。
これを再現する最小限の例を次に示します。
def test():
import pdb; pdb.set_trace() # XXX BREAKPOINT
return 0
test()
このセルを2回続けて実行します。
これと同じ問題は、Unixでも一言一句起こります。
「ノートブックからサブプロセスを実行すると、スタックした場合、カーネルはロックされて待機します。メニューから[カーネル/割り込み]を選択しても、サブプロセスは終了しませんが、カーネルは不安定な「部分的にロックされた」状態のままになります。 、他のセルが実行されない場合。唯一の解決策は、カーネルを再起動することです。」
pdbハングの良い例をありがとう、wmayner。 しかし、sInce pdbはサブプロセスで実行されないため、pdbの別の問題を開きました:#10516
大量のデータを印刷すると、たとえば、巨大なnumpy配列を誤って印刷すると、カーネルが完全に応答しなくなり、終了できなくなる可能性があります。
この問題の解決策はまだ見つかりましたか? 完了するまでに14時間かかった機械学習モデルを実行したところ、カーネルがスタックし、セルが実行されなくなりました。 再起動すると、モデルを14時間再度実行する必要があります。 それで、解決策はありますか?
まだ試していませんが、これは役立つようです: http :
特定のサブプロセスがスタックしている場合は、おそらくタスクマネージャーで見つけて、その方法で強制的に強制終了できます。 うまくいけば、それはカーネルを継続させます。
いいえ、問題は、カーネルがWebサーバーをスパムして死ぬか何かにすることです。 Webサーバーを強制終了すると、カーネルafaikが強制終了されます
私もスタックしたノートブックを扱っています:割り込み、再起動、再接続-それらのどれも何もしません。 [*]
インジケーターは、実行するためにキューに入れられているかのようにセルの横に残りますが、セルは実行されません。
動作は、以下を含むセルを実行した後に始まりました。
filedir = "20161214_rooftest"
!ls -RC $filedir
正常に実行される類似のセルが他の場所にあるため、これは奇妙です。 ls
がスタックする可能性があるかどうかはわかりませんが、それ以外の場合、私の状況はこの問題と一致しているようです。
これに対する解決策はありますか? Kernalを中断することはできません。
私にとっては、sklearnのGridSearchCVで発生しています。
タスクマネージャーにconda.exeという名前のプロセスがありました。 私はそのプロセスを強制終了し、カーネルを正常に中断することができました
割り込みはまだ壊れています。 インポートを毎回再起動してリロードする必要があります。
Python3.7カーネルのjupyterlabでも同じ問題が発生します
Jupyter Notebookでも同じ問題が発生し、タスクマネージャーでconda.exeという名前のプロセスが見つかりません。 ソリューションの更新はまだありますか?
解決策ではありません
この場合、カーネルに再接続しようとすると役立つことがあります
同じことをWindows10で観察する
誰かがそれで成功しましたか? 私は夢中になっています
タスクマネージャーにconda.exeという名前のプロセスがありました。 私はそのプロセスを強制終了し、カーネルを正常に中断することができました
@ahmedraoどうやって????
この問題は6年間存在し、まだ解決策がありません。
この問題は6年間存在し、まだ解決策がありません。
解決策なしで6年間、カーネルを再起動するだけです
同じ問題がますます頻繁に発生し、ノートブックが使用できなくなるところまで来ています。これは本当に残念です。 Anaconda 3.7では、セルがアスタリスクでハングし、カーネルに割り込むことができません。
同じ問題をマークする
特にdbgと入力で常にこの問題が発生しました。
ウィンドウズ10; ノートブックサーバー5.7.8; Python 3.6.6。; コンダ4.7.5
私は基本的にノートブックを確実にデバッグできないことを学びました:(
うん、問題はまだ存在します。 これを克服する方法はありますか? 自分のいる場所にたどり着くまでに時間がかかりすぎるので、ノートブックをもう一度実行したくありません。
上!
この問題は、pdbを使用し、セルを再実行する前に終了するのを忘れるたびに、何年もの間私にとって苦痛でした。
BountySourceでバウンティを作成しました。 十分なお金を集めることができれば、これは最終的に修正されるかもしれません。
https://www.bountysource.com/issues/44958889-hang-after-running-pdb-in-a-cell-kernel-interrupt-doesn-t-help
特にWindowsでのプロセスの問題については、次の理論があります(まだテストされていません)。
IPython.utils._process_win32.system
を介して実行され、 _system_body
を呼び出し、 subprocess.Popen
オブジェクトでp.wait()
を呼び出します。subprocess.Popen.wait()
は、中断できないという既知の問題があります: //bugs.python.org/issue28168それが原因である場合は、100ミリ秒ごとにビジーループに切り替えると、おそらく割り込み可能になるか、そうでない場合はパッチでアプローチします。
ありがとう@Carreau!
ありがとう@Carreau! これが一般リリースに入るのはいつですか。それは、[カーネルの中断]ボタンを正常に使用できるようになることを意味しますか?
明日は7.13をやります。 割り込みボタンが修正される場合があります。
ねえ@Carreau
進行中のセルの実行を中断しようとすると、この問題に直面します。中断は永久に続き、最後に再起動する必要があります。
したがって、デモンストレーションのために、 @ wmaynerが問題を再現する方法を提案しました。 同じもののスクリーンショットをいくつか添付しました。
私のマシンのJupyterバージョン。
@ Arpit-Golepdbはそれ自体の特定の問題です。 私もすぐにそれを修正したいと思っています: https :
@itamarst私は次のようにモデルをトレーニングしています:
forest_clf = RandomForestClassifier()
cross_val_score(forest_clf, X_train, y_train, cv=3, scoring='accuracy', verbose=10, n_jobs=-1)
データセットに基づいて、時間がかかることがわかっています。 しかし、なんらかの理由で、 Kernel> InterruptKernelを押して処理を途中で停止することを選択したと言います。
理想的には、中断する必要がありますが、停止するには永遠にかかります。
進行状況がすべて失われるため、再起動したくありません。
助けてください!
中断しようとしていることがCで実装されている場合は、何もする必要はありません。 sigintを処理するために使用するライブラリ次第です。
私も時々これに遭遇します...これはjupyerlabからの再現可能な例です:
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
何かアドバイスはありますか?
今日の午後にこの問題に3回遭遇し、私がまだurllibを使用していた古き良き時代を思い出させます。
urllibにあると思ったのですが、私のリクエストに応答がないからです。
私は働いていましたが、コーディングしています。解決策を見つける必要がありますが、答えを見つける必要があります。 したがって、すべての変数をローカルファイルに保存します。
本当にそれが何度も起こるのを見たくありません。
ディープラーニングモデルのトレーニングにtensorflowとgpuを使用する場合、同じ問題に直面しています。
time.sleepとリクエストでこれに遭遇します
Windowsのtime.sleepリクエストでもこの問題が発生しますが、Mac OSXでは正常に動作します
ThreadPoolExecutorでこの問題が発生しています...次のようなものです。
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)
中断する唯一の方法はカーネルを再起動することです...非常にイライラします
最も参考になるコメント
これに噛まれたばかりで、カーネルを再起動する必要があると思います。つまり、大量のデータが失われただけです…
pdb
を使用して関数をデバッグしていました。 最初にpdb
を終了せずにセルを再実行しましたが、今は何も中断できません。これを再現する最小限の例を次に示します。
このセルを2回続けて実行します。