我尝试将一些输出从python3输入到dzen2,但是dzen不会更新。
bash中的:
i=0; while true; do; echo $i; (( i++ )); sleep 1; done | dzen2
输出终端:
0
1
2
3...
在python中
import time
i=0
while True:
print(i)
i+=1
time.sleep(1)
输出终端:
0
1
2
3...
python3 while.py | dzen2 黑空dzen2-bar
bash-loop.sh | dzen2 黑条从0到......
答案 0 :(得分:1)
当python的输出为tty时,它行缓冲stdout。但是当它的输出是一个管道时,stdout是块缓冲的。这意味着python将保存所有数据,直到它有一个完整的块(1024字节,或512或4192,具体取决于您的系统)来编写。这是非常标准的。请参阅:stackoverflow.com/questions/107705/python-output-buffering