[英]tqdm progress bar with Docker logs
我正在使用tqdm為我的 Python 控制台應用程序顯示各種進度條。 對於應用程序的生產部署,我使用 Docker。
在終端中運行 Python 應用程序時,進度條工作正常。 但是,當 Dockerized 和終端 output 通過docker logs
訪問時,進度條不會 function 因為據我了解它不是交互式終端。 雖然看起來如果docker logs
在進度條完成后轉儲,則進度會呈現,但不確定是否還有其他條件會發生這種情況(輸出緩沖?)。
我想修改我的tqdm
行為,以便
這樣,在生產中運行應用程序時,進度持續時間等將更容易訪問。
將這種自定義行為附加到tqdm
的方法是什么?
您可以根據沒有 TERM 環境變量來識別您的進程是否在非交互式 docker 環境中運行。
# interactive environment
$ docker run --rm -it centos:7 env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=8c810e490671
TERM=xterm
HOME=/root
# non-interactive environment
$ docker run --rm centos:7 env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=e267f2ba0f8f
HOME=/root
在您的腳本中考慮這一事實,如果是非交互式環境,請使用 tqdm 的total
參數或disable
它:
總計:int 或 float,可選
預期的迭代次數。 如果未指定,則盡可能使用 len(iterable)。 如果 float("inf") 或作為最后的手段,則僅顯示基本進度統計信息(無 ETA,無進度條)。 如果 gui 為 True 並且此參數需要后續更新,請指定一個初始的任意大正數,例如 9e9。
禁用:布爾,可選
是否禁用整個進度條包裝器 [默認值:False]。 如果設置為無,則在非 TTY 上禁用。
https://github.com/tqdm/tqdm/#parameters
更新:
看起來非交互式環境中的 TERM 環境變量的值為“啞”
docker run --rm centos:7 bash -c 'echo "${TERM}"'
dumb
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.