最近在写作一个需求,需要用 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
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。