2017-04-11 3 views
1

Hier ist ein einfaches Skript, das die tqdm Fortschrittsbalken verwendet:wie ein Skript mit tqdm im Hintergrund laufen zu lassen ist

from tqdm import tqdm 
from time import sleep 

for i in tqdm(range(10000)): 
    sleep(1) 

Manchmal möchte ich lassen Sie es auf meinem Server ausgeführt und beendet werden. In diesen Fällen bin ich natürlich nicht wirklich daran interessiert, den Fortschrittsbalken zu sehen. Ich mache das:

$ python mytest.py & 
$ disown 
$ exit 

Aber sobald ich verlasse, stoppt der Prozess. Warum passiert es und was kann man dagegen tun?

Antwort

1

Ich denke, die Antwort könnte here erwähnt werden.

Aufruf disown tut nicht vollständig trennen Sie den Prozess vom Terminal. Da sys.stdin, sys.stout und sys.stderr von der Shell geerbt werden, wenn das Terminal zerstört wird, wird das Skript fehlschlagen, sobald es versucht, auf Standardfehler zu drucken, die tqdm versucht zu tun.

Ich weiß nicht, ob Sie eine Subshell ausführen oder wenn der Befehl das Terminal zerstört. Wenn Letzteres wahr ist, könnte das erklären, warum der Prozess endet. Sie könnten vielleicht versuchen, redirect alle Terminal-Ausgabe zu /dev/null und sehen, ob das hilft?

Verwandte Themen