2017-04-11 48 views
1

這裏運行的腳本是使用tqdm進度條的簡單腳本:如何與tqdm背景

from tqdm import tqdm 
from time import sleep 

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

有時候我要讓它在我的服務器和退出上運行。當然,在這些情況下,我並不是真的有興趣看到進度條。我這樣做:

$ python mytest.py & 
$ disown 
$ exit 

但是,一旦我退出,過程停止。爲什麼會發生以及如何處理?

回答

1

我想答案可能會提到here

調用disown確實不是完全斷開與終端的進程。因爲sys.stdin,sys.stoutsys.stderr是從shell繼承而來的,所以如果終端被銷燬,腳本會在嘗試打印到標準錯誤時立即失敗,tqdm嘗試執行。

我不知道你是否正在運行一個子shell或者如果exit命令銷燬終端。如果後者是真的,那麼這可能解釋爲什麼該過程終止。你也許可以嘗試redirect所有的終端輸出到/dev/null,看看是否有幫助?