如何停止 GNU 使缓冲 Python 输出



以下示例 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

相关内容

  • 没有找到相关文章

最新更新