我有一个python代码,我正在计算机集群上运行。代码失败(或取消等)时,默认输出(stdout
,来自print
)会丢失。在调用相应的代码部分后立即调用它时,它也不会出现在输出文件中。
但是,当作业失败时,会打印错误输出(stderr
)。如果我没记错的话,在c ++中你可以flush
流来确保实际打印出某个地方缓冲区中的输出。是否有python的模拟?我怎样才能确保尽快得到这个输出?
我的代码的示意图
for it in somerange:
print "Iteration", it # This appears much later in stdout
f = open(filename[it], 'w')
f.write('stuff')
f.close # file appears when it is closed
otherStuff()
经过几次迭代后,我会有很多输出文件(来自filename
),但我的stdout
文件中没有输出。如果函数otherStuff()
导致崩溃(等),输出将出现在我的stderr
文件中 - 但我的stdout
文件中仍然没有。
答案 0 :(得分:0)
好的,print
转到sys.stdout这是file object,您可以使用flush()
命令。所以正确答案是在需要时添加flush()
次呼叫,即
import sys
...
for it in somerange:
print "Iteration", it # This appears much later in stdout
sys.stdout.flush()
f = open(filename[it], 'w')
f.write('stuff')
f.close # file appears when it is closed
otherStuff()