17

IPython Notebook でいくつかの長いタスクを実行し、ブラウザを閉じてから、しばらくしてから再度開いて、これらのタスクの結果を明らかにすることは可能ですか?

たとえば、次のようなタスク:

def f():
    import time
    time.sleep(100)
    with open("result.txt", "w") as fh:
        fh.write("Done.")

タスクを正常に実行し、完了する前にブラウザーを閉じて、ブラウザーを再び開くと、 no が表示され'result.txt'ます。

マジックまたは並列実行を使用して実行すると、%px完了する前にブラウザを閉じても結果が得られません。

利用可能な拡張機能やハックはありますか? または、何か不足していますか?

更新 1:

IPythonにはバックグラウンド ジョブ コントロールのサポートがありますが、ブラウザーを切断するとバックグラウンド ジョブが古くなります。私が思いついた唯一のことは%connect_info、ブラウザを閉じる前に発行し、次に使用して画面端末から接続することです

ipython console --existing <ID>.json

そこから私の仕事を実行します。

更新 2:

さらに便利なハックは、ipython consoleと ジョブ コントロールの組み合わせです。つまり、ブラウザでバックグラウンド ジョブを開始しているときに、コンソールを開いて同じセッションにアタッチし、ジョブが終了するまで自由に閉じることができます。

更新 3:

バージョン iPython 1.0dev 以降、ハックなしで動作するようです。必要なものを実行するだけで、ブラウザを閉じても実行されます。

4

2 に答える 2

1

これが IPython 1.0 の新機能かどうかはわかりませんが、私の IPython ノートブックでは、 function を呼び出してf()ブラウザーを閉じると、カーネルがバックグラウンドで実行され、しばらくすると (私は に変更されましたtime.sleep(10))results.txtファイルが表示されます生成されます。通常はコンソールで起動するカーネルが、ブラウザ ウィンドウを閉じたときに停止することはないと思います。私が間違っている場合はお知らせください。

于 2013-09-04T23:23:17.850 に答える