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

3
这里是一个使用tqdm进度条的简单脚本示例:
from tqdm import tqdm
from time import sleep

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

有时候我想让程序在服务器上运行并退出。在这种情况下,我并不真正关心进度条的显示。我会这样做:

$ python mytest.py &
$ disown
$ exit

但一旦我退出,进程就会停止。为什么会发生这种情况,该怎么处理呢?
1个回答

1

我认为答案可能会在这里提到。

调用disown并不能完全将进程与终端断开连接。由于sys.stdinsys.stdoutsys.stderr都是从shell继承的,如果终端被销毁,脚本将会在尝试打印标准错误时失败,而tqdm正是这样做的。

我不知道你是否正在运行子shell,或者exit命令是否销毁了终端。如果后者是真的,那可能就解释了为什么进程终止了。也许你可以尝试将所有终端输出重定向/dev/null,看看是否有帮助?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接