小墨の博客

梦想需要付诸行动,否则只能是梦

Python print 输出不立即打印问题(原创)

最近在写作一个需求,需要用 Python 脚本批量处理一些文件,于是需要写一个负责任务分配调用的脚本。

目前采用的方式是在负责任务分配的 Python 脚本A 中通过 subprocess 模块创建一个子线程,通过在新的子线程中执行 python main.py 的方式调用脚本B(虽然这种方式看起来不是最优的,但是在当下来看确实是最省事且对原有项目改动最小的一种方法)

但是在实际测试中,由于一些原因,脚本B在执行时出现错误,于是准备使用 print 函数将相关的变量打印到控制台中方便调试,问题就出现了。

在 print 的时候,控制台还没有输出,过了一段时间才输出出来的

但是可以确定的是,程序已经执行到 print 函数调用之后了,因为我在 print 之后将日志写入了一个文件,通过查看日至可以确定 print 函数是执行过的。


猜测应该是控制台输入输出缓冲区(stdin / stdout)的问题,查资料可知,有两种解决方案(如下),经测试确实是该问题。


(1)通过 sys.stdout.flush() 刷新缓冲区

import sys 
def foo():
    print("Hello world!")
    sys.stdout.flush()

(2)调用 print 函数时,传入 flush = True(Python3)

def hello():
    print("Hello world!", flush=True)



写这篇博客时,参考了以下文章:

python print 不能立即打印输出 解决方法

https://blog.csdn.net/whatday/article/details/111594408

张小弟之家

本文链接:
文章标题:

本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:545
    • 页面总数:20
    • 分类总数:96
    • 标签总数:213
    • 评论总数:63
    • 浏览总数:285197

    | | |
    | |  Z-Blog PHP