我试图在使用大量数据列表的生成器中打印调试信息。但是,只有在生成器完成时我才能看到结果。
我正在使用python 3,我的代码如下:
def generator():
while 1:
print ('.', end='')
time.sleep(1)
yield 1
for a in generator():
print ('|', end='')
结果:
^C.|.|.|.|.|
等效的PHP7代码按预期工作:
function generator()
{
while (1) {
echo '.';
sleep(1);
yield 1;
}
}
foreach (generator() as $item) {
echo '|';
}
结果:
.|.|.|.|.|^C
如何在生成器周期的每次迭代中实时打印调试信息?
答案 0 :(得分:4)
<强> TL; DR:强>
我相信你对这个问题有类似的问题:Print statements not working when serve_forever() is called?(尽管标题不明显......)
尝试冲洗您的照片:
print ('.', end='', flush=True)
print ('|', end='', flush=True)
刷新
方法flush()刷新内部缓冲区,如stdio's fflush。这可能是某些文件类对象的无操作。
强制 print()
函数将已经缓存到目前为止的任何内容打印到您机器的stdout
。