web-dev-qa-db-ja.com

Ipythonセルの実行が停止するのはなぜですか?

これは非常に新しい質問だと思いますので、お詫びします。グループプロジェクトにipythonノートブックを使用しようとしています。私たちが構築しているプログラムはかなり大きく、多数の外部データセットを取り込みます。多くの場合、Ipythonは機能しなくなっているようです。 1つまたは複数のセルを実行しようとすると、何も起こりません(セルの左側の角かっこ[]に小さなアスタリスク*が表示されることを除いて)。新しいセルを追加して2 + 2を実行しようとしても、何も起こりません。ここで何が起こっているのですか?これを修正するにはどうすればよいですか?ありがとう!

17
user3786999

セルの横のアスタリスク[*]は、セルが現在実行中であることを示します。 IPythonは各ノートブックに独自のカーネルを提供しますが、ノートブックごとにoneカーネルしかありません。そのカーネルがコード(セルまたは一連のセル)の実行でビジーである場合、現在実行中の処理が完了するまで、それ以上のコードを受け入れたり実行したりすることはできません。カーネルの準備が整うまで、新しい実行はキューに入れられます。

2+2の実行を試みた後、十分に待機すると、それが最終的に実行されることがわかります(メインコードが存在すると仮定します)。

これに対する解決策は、コードと、結果が得られるまでどれだけ待つかによって異なります。原則として、次のことを試してください。

  • より小さいデータセットを使用してアルゴリズムをテストし、スケールアップ段階的に時間の増加に注意してください。完全なデータセットで実現可能になるでしょうか?
  • アルゴリズムはディスクに対して読み取り/書き込みを行っていますか?あなたはそれを避けることができますか、それともプリロード/ポストセーブ状態ですか?
  • データをバッチに分割することは可能ですか?
  • アルゴリズムがバッチ可能な場合、CPUを最大限に活用するためにアルゴリズムを並列化できますか?

カーネルに割り込むことはできますが、実行が現在カーネルの手に負えない場合、これは機能しません。外部Cモジュール(たとえば、多くのnumpy)。このような場合、完全に再起動する必要があります。

19
mfitzp