2016-07-23 17 views
5

Belirli bir süre boyunca çalışan her bir kodun bir parçası olduğumu varsayalım: 1.. Benim kara kutu ileTV yerine yerleştirir:Jupyter defterinde önceki çıktının üzerine yaz

from random import uniform 
import time 

def black_box(): 
    i = 1 
    while True: 
     print 'Iteration', i, 'Score:', uniform(0, 1) 
     time.sleep(1) 
     i += 1 

Şimdi Jupyter notebook bunu çalıştırdığınızda, bu çıkışı yeni bir satır her saniye sonra:

Iteration 1 Score: 0.664167449844 
Iteration 2 Score: 0.514757592404 
... 

Evet, sonra çıkışı çok olduğunda büyük, html kaydırılabilir hale gelir, ama şu anki sonuncu hariç, bu satırlardan hiçbirine ihtiyacım yok. n saniyeden sonra n satırları yerine, sadece 1 satırını (sonuncusu) göstereceğim.

Dokümantasyonda veya sihire bakarak böyle bir şey bulamadım. Neredeyse aynı başlık ile A question ama ilgisiz.

+0

: http://stackoverflow.com/questions/24816237/ipython-notebook-clear-cell- Bu (Python 2.7) gibi, hem de ekran() işlevini kullanarak tavsiye çıktı kodu – cel

cevap

5

(sadece Python 3 ile çalışır) açıkladığınız ne yapacağını olağan (belgelenmiş) yoludur:

print('Iteration', i, 'Score:', uniform(0, 1), end='\r') 

bu answer yılında gösterdiği gibi Python 2 biz, baskı sonrası sys.stdout.flush() zorunda:

print('Iteration ' + str(i) + ', Score: ' + str(uniform(0, 1)), end='\r') 
: ipython defter,

print('Iteration', i, 'Score:', uniform(0, 1), end='\r') 
sys.stdout.flush() 

Ben çalışması için dizeyi bitiştirmek zorunda

print('\r', 'Iteration', i, 'Score:', uniform(0, 1), end='') 

Yoksa önce ve daha mantıklı eğer time.sleep sonra print s bölünmüş gibi, veya daha açık olması gerekir:

Ve nihayet, bu Jupyter ile çalışması için, bunu kullandım

print('Iteration', i, 'Score:', uniform(0, 1), end='') 
time.sleep(1) 
print('', end='\r') # or even print('\r', end='') 
+0

MacOS'ta bu, notebook'ta herhangi bir çıktı üretmiyor gibi görünüyor. – cel

+0

@cel, jupyter'i kurup denedikten sonra, Linux'ta da çalışmıyor. İşletim sistemi değil, jupyter tarafından yapılan bir değişiklik olmalı. – chapelo

+1

@cel Found a * hack * 'i çalıştırmak için Jupyter :) ile çalışın – chapelo

5

@cel haklı: clear_output kullanma ipython notebook clear cell output in code

() verir Dizüstü olsa gergin olmak yapar. Bu bir çözüm olabilir

from random import uniform 
import time 
from IPython.display import display, clear_output 

def black_box(): 
i = 1 
while True: 
    clear_output() 
    display('Iteration '+str(i)+' Score: '+str(uniform(0, 1))) 
    time.sleep(1) 
    i += 1 
+0

İyi bir cevap! Modülün adı "IPython" olmalıdır, bence. – Cnly

+0

karşıdan yüklendi. Bunun için teşekkürler. – Cnly

+0

Hızlı yinelenen döngüler için clear_output (wait = True) öneririm.True değerine ayarlandığında, bekletme nedenleri, yeni bir giriş alınana kadar netleşmeyi geciktirir. –

İlgili konular