2013-04-23 7 views
13

IPythonノートブックでいくつかの長いタスクを実行し、ブラウザを閉じてから、もう一度開いてこれらのタスクの結果を表示することはできますか?IPythonのいくつかのタスクをデタッチモードで実行する

言って、このようなタスク:

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

私が完了する前に、通常、タスク、および緊密ブラウザを実行した場合、私はそれをバック開くと、私は'result.txt'を見ていません。

%pxのマジックまたはパラレル実行を使用すると、完了前にブラウザを閉じると結果が表示されません。

拡張機能やハックはありますか?または私は何かを逃していますか?

UPDATE 1:

background jobs control support in IPythonはありますが、私はブラウザを切断した後、バックグラウンドジョブが古くなります。私が思い付くことができ 唯一のことは

ipython console --existing <ID>.json 

を使用して、画面の端末から接続して、そこから自分のジョブを実行し、ブラウザを閉じる前に%connect_infoを発行し、そしてれます。

UPDATE 2:

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

UPDATE 3:

どんなハックなしバージョンiPythonの1.0devので、動作しているようです。あなたはただあなたが望むものを実行し、ブラウザを閉じて、それはまだ実行されます。

答えて

2

私は通常、linuxコマンド画面を使用して、バックグラウンドで実行できる別のシェルを開きます。

たとえば、最初にシェルを入力するときに「screen」と入力します。その後、新しい端末を提供します。上記のコマンドでipythonを起動します。実行したら、キーボードでCTRL + A CTRL + Dを押します。プログラムはバックグラウンドで実行を開始し、ターミナルを閉じることができます。それに戻るには、コマンドラインに 'screen -r'と入力します。

+0

Stephan、多分私は明確ではなかったが、ブラウザベースのコンソールであるiPythonノートブックについて質問している。そして、私はコンソールベースのブラウザを使って画面下からiPythonにアクセスする方法がないことを発見しました。 – Anaderi

+0

私の悪い。その後、手がかりではありません。 – Stephan

1

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

+0

実際には1.0devからIPythonで動作するようです – Anaderi

関連する問題