【问题标题】:How to see print output from generator before ending the cycle?如何在结束循环之前查看生成器的打印输出?
【发布时间】:2017-09-02 22:03:06
【问题描述】:

我正在尝试在处理大量数据的生成器中打印调试信息。但是,我只能在生成器完成后才能看到结果。

我使用的是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

如何实时打印生成器循环的每次迭代的调试信息?

【问题讨论】:

    标签: python python-3.x generator


    【解决方案1】:

    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

    【讨论】:

    • 谢谢你,约翰(9 分钟后将标记为答案)
    • 没问题的伙伴:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 2022-11-22
    • 1970-01-01
    相关资源
    最近更新 更多