2013-04-23 31 views
13

是否可以在IPython Notebook中運行一些長期任務,關閉瀏覽器,然後再次打開並顯示這些任務的結果?在分離模式下在IPython Notebook中運行一些任務

說,任務是這樣的:

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

如果我完成之前運行任務正常,並關閉瀏覽器,因爲我開回來,我看不出有什麼'result.txt'

如果我使用%px魔術或並行執行來運行它 - 如果我在完成之前關閉瀏覽器,再次沒有結果。

任何擴展或黑客可用?或者我錯過了什麼?

更新1:

雖然background jobs control support in IPython,後臺作業變得陳舊後,我拔下瀏覽器。 我能想出關閉瀏覽器之前發佈%connect_info,然後唯一使用

ipython console --existing <ID>.json 

從屏終端連接並從那裏運行我的工作。

更新2:

更有幫助黑客是ipython console和作業控制相結合。即我打開控制檯並附加到同一會話,同時在瀏覽器中啓動後臺作業,然後我可以自由關閉它直到作業完成。

更新3:

似乎因爲沒有任何黑客版本IPython的1.0dev工作。你只需運行你想要的東西,關閉瀏覽器,它仍然運行。

回答

2

我通常使用linux命令屏幕,它打開一個可以在後臺運行的不同shell。

例如,當你第一次進入你的shell時,你輸入'screen'。然後它給你一個新的終端。用上面的命令啓動ipython。運行後,在您的鍵盤上按CTRL + A CTRL + D。程序然後開始在後臺運行,您可以關閉終端。如果你想回到它,請在命令行中鍵入'screen -r'。

+0

斯蒂芬,也許我不清楚,但我問的是iPython筆記本 - 這是一個基於瀏覽器的控制檯。我發現沒有辦法使用基於控制檯的瀏覽器從屏幕下訪問iPython。 – Anaderi 2013-04-23 11:39:59

+0

我的不好。那麼不是一個線索。 – Stephan 2013-04-26 11:18:03

1

我不知道這是IPython 1.0中的新增功能,但在我的IPython筆記本中,如果我調用您的函數f()並關閉瀏覽器,內核將在後臺運行,稍後(我更改爲time.sleep(10))我看到生成的results.txt文件。我不認爲通常在控制檯中啓動的內核在關閉瀏覽器窗口時會停止。如果我錯了,請告訴我。

+0

確實它似乎在1.0dev以後在IPython中工作 – Anaderi 2013-09-16 20:39:03

相關問題