2013-06-27 7 views
7

में मुद्रित बयानों को कैसे फ़्लश करें मैं अपने फ़ंक्शन में लूप के दौरान कुछ डीबग स्टेटमेंट प्रिंट करना चाहता हूं और मैं फ़ंक्शन को कॉल करने के लिए आईपीथन का उपयोग करता हूं। एक उदाहरण के समारोह होने दो:आईपीथॉन

def test_print(): 
    import time 
    for i in range(5): 
     time.sleep(2) 
     print i, time.time() 

परिणाम इस प्रकार की तरह है:

0 1372337149.84 
1 1372337151.84 
2 1372337153.85 
3 1372337155.85 
4 1372337157.85 

मैं प्रत्येक पंक्ति मुद्रित होने की उम्मीद है, तो 2 सेकंड के लिए प्रतीक्षा करें। लेकिन व्यवहार इस प्रकार है। मैं पहली बार निरीक्षण:

0 1372337149.84 
1 

फिर, 2 सेकंड के बाद मैं 1 के समय स्टाम्प और अगली पंक्ति है, जो 2 है की आईडी का निरीक्षण। मैं अंत में आखिरी बार टिकट का निरीक्षण करता हूं। मैं समझ नहीं पाया कि यह एक समय में एक पंक्ति के बजाय ऐसा क्यों व्यवहार करता है। कोई विचार? मुद्रित होने की प्रतीक्षा में क्या प्रिंट करने के लिए मुझे एक विशेष फ्लश फ़ंक्शन चाहिए?

+0

यह मेरे लिए सामान्य रूप से काम करता है। – Doorknob

+0

सीपीथॉन का उपयोग करना यह अपेक्षा के अनुसार व्यवहार करता है। लिनक्स और विंडोज दोनों के लिए। – Elazar

+0

मैं Canopy 1.0.1 का उपयोग कर रहा हूँ। इसमें पाइथन 2.7.3 64 बिट है। – petrichor

उत्तर

11

मैंने कभी भी आईपीथन का उपयोग नहीं किया है, लेकिन प्रत्येक print कथन के बाद इसे स्टडआउट फ्लश करने के लिए पर्याप्त होना चाहिए।

कुछ इस तरह काम करने के लिए चाहिए ...

def test_print(): 
    import time 
    import sys 
    for i in range(5): 
     time.sleep(2) 
     print i, time.time() 
     sys.stdout.flush() 
+4

लेकिन, 'प्रिंट' स्वचालित रूप से नई लाइन जोड़ता है, इसलिए इसे किसी भी तरह से फ़्लश किया जाना चाहिए था। – Elazar

+1

@ एलाजार इन सीपीथन, शायद। शायद आईपीथन अलग व्यवहार करता है। – Aya

+0

यह अब काम करता है, बहुत बहुत धन्यवाद। – petrichor