2013-04-23 2 views
13

Ist es möglich, einige lange Aufgaben in IPython Notebook zu starten, Browser zu schließen und dann nach einiger Zeit wieder öffnen und Ergebnisse dieser Aufgaben offen legen?Führen Sie einige Aufgaben in IPython Notebook im losgelösten Modus

Sprich Aufgabe wie folgt aus:

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

Wenn ich Aufgabe normal laufen und nahen Browser vor der Fertigstellung, wie ich es wieder öffnen, sehe ich keinen 'result.txt'.

Wenn ich es mit %px Magie oder parallele Ausführung ausführen - wieder kein Ergebnis, wenn ich den Browser vor Abschluss schließen.

Alle Erweiterungen oder Hacks verfügbar? Oder fehlt mir etwas?

UPDATE 1:

Obwohl es background jobs control support in IPython ist, werden Hintergrundjobs abgestanden, nachdem ich Browser trennen. Das einzige, was ich tun konnte, ist %connect_info vor dem Schließen Browser Ausgabe und dann von Screen-Terminal verbindet

ipython console --existing <ID>.json 

mit und meine Jobs von dort.

UPDATE 2:

Noch hilfreicher Hack ist eine Kombination aus ipython console und Auftragssteuerung. I.e. Ich öffne die Konsole und lege mich an dieselbe Sitzung an, während ich den Hintergrundjob im Browser starte, und dann kann ich ihn schließen, bis der Job beendet ist.

UPDATE 3:

es scheint, ohne Hacks seit Version ipython 1.0dev zu arbeiten. Sie führen einfach was Sie wollen, schließen Sie den Browser und es läuft noch.

Antwort

2

Normalerweise verwende ich den Linux-Befehlsbildschirm, der eine andere Shell öffnet, die im Hintergrund ausgeführt werden kann.

Zum Beispiel, wenn Sie Ihre Shell zum ersten Mal eingeben, geben Sie 'Bildschirm' ein. Es gibt Ihnen dann ein neues Terminal. Starte ipython dort mit dem obigen Befehl. Sobald es ausgeführt wird, drücken Sie auf Ihrer Tastatur STRG + A STRG + D. Das Programm startet dann im Hintergrund und Sie können das Terminal schließen. Wenn Sie zu diesem Thema zurückkehren möchten, geben Sie in der Befehlszeile 'screen -r' ein.

+0

Stephan, vielleicht war ich nicht klar, aber ich frage nach iPython Notebook - das ist eine browserbasierte Konsole. Und ich habe keine Möglichkeit gefunden, konsolenbasierte Browser für den Zugriff auf iPython über den Bildschirm zu verwenden. – Anaderi

+0

Mein schlechtes. Keine Ahnung also. – Stephan

1

Ich weiß nicht, ob das in IPython 1.0 neu ist, aber in meinem IPython-Notebook, wenn ich Ihre Funktion f() aufrufen, und den Browser zu schließen, läuft der Kernel im Hintergrund und nach einer Weile (ich wechselte zu time.sleep(10)) Ich sehe die results.txt Datei generiert. Ich glaube nicht, dass der Kernel, den Sie normalerweise in einer Konsole starten, stoppt, wenn Sie das Browserfenster schließen. Lass es mich wissen, wenn ich mich irre.

+0

tatsächlich scheint es in IPython seit 1.0dev zu funktionieren – Anaderi