2016-02-29 63 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)