2016-02-29 59 views
0

当我执行中的Spyder下面的代码:后,打印多个语句相互

print('a') 
some_calculation 
print('b') 
print('c') 
some_calculation 
print('d') 
print('e') 
etc 

,我用一个函数来查找项目在字典中,也不会输出所有的字符串到控制台Spyder的。例如:它会打印'a'和'b',然后什么也不打印,并且在我点击ctrl + c停止执行后,它会突然打印出'c'(然后忙于第二次计算)。完成后,所有字母都已打印完毕,但不会在执行代码时打印。

看来,控制台只能正确处理一个打印语句,并试图显示下一个它已经冻结输出的计算开始。有什么方法可以解决这个问题吗?

+0

这是奇怪。你能提供代码库的实际代码吗?你提到的行为是不可能的。 –

+1

以换行符结尾的控制台输出应该立即显示。也许Spyder正在干扰这个?尝试在每次打印呼叫后放置'sys.stdout.flush()'。 –

+0

sys.stdout.flush()做到了。我注意到我正在使用print('a',end =''),所以下一个输出将放在可能混乱缓冲区的同一行上。冲洗输出诀窍!谢谢 –

回答

0

这是因为打印使用缓冲区。 既然你似乎可以用Python 3中,你可以简单地使用在所有的打印flush=True,他们将被马上打印:

print('a', flush=True)