2017-04-11 18 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,看看是否有帮助?