如何 运行 在后台使用 tqdm 的脚本

how to run a script with tqdm in background

这是一个使用 tqdm 进度条的简单脚本:

from tqdm import tqdm
from time import sleep

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

有时我想让它在我的服务器上 运行 然后退出。自然地,在那些情况下我对看到进度条不是很感兴趣。我这样做:

$ python mytest.py &
$ disown
$ exit

但是一旦我退出,进程就停止了。为什么会发生这种情况以及如何处理?

我想答案可能会被提及here

调用 disown 不会 完全断开进程与终端的连接。由于 sys.stdinsys.stoutsys.stderr 继承自 shell,如果终端被破坏,脚本将在尝试打印到标准错误时立即失败,这tqdm 尝试做。

不知道你是运行一个subshell还是exit命令破坏了终端。如果后者为真,则可以解释进程终止的原因。您也许可以尝试 redirect 所有终端输出到 /dev/null 看看是否有帮助?