以下示例 Python 程序打印更新进度条。
progress.py :
import sys
import time
for i in range(100):
sys.stdout.write("r%3d%%" % (i + 1))
sys.stdout.flush()
time.sleep(.02)
sys.stdout.write("n")
但是,当使用以下 Makefile 通过 GNU Make(来自 Ubuntu 上的 Bash)运行它时,输出似乎被缓冲,直到遇到换行符,因此进度更新不可见。无缓冲输出被指定给 Python,只是为了确定。
all :
python -u progress.py
有没有办法在使用make时立即看到部分线输出?
我最终将其追踪到make
在我们的/etc/bash.bashrc
中被colormake
别名。
> type make
make is aliased to `colormake'
似乎colormake
缓冲区输出。据推测,在着色之前,它需要解析整行。
此问题已通过添加以下内容修复:
unalias make
到~/.bashrc
.
> type make
make is /usr/bin/make