stdout - Using tee to get realtime print statements from python -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 15 उत्तर
मेरे पास एक अजगर स्क्रिप्ट है ऐसा कुछ दिखता है: संग्रह में आइटम के लिए
प्रिंट करें "प्रिंट करें" क्या करें "#" जटिल सामान जो एक लंबा समय लेता है।
बैश में, मैं निम्नलिखित से यह स्क्रिप्ट चलाता हूं:
$ python my.py | Tee my_file.txt
हालांकि, प्रोग्राम को खत्म होने तक मैं बैश में देखता हूं एक रिक्त रेखा है। फिर, सभी प्रिंट स्टेटमेंट एक बार आते हैं।
क्या यह टी की अपेक्षित संचालन है? क्या मैं री-टाइम में आउटपुट देखने के लिए टी का उपयोग कर सकता हूं?
पायथन, कई कार्यक्रमों की तरह, जितनी बार इसे
लिखते हैं सिस्टम कॉल कॉल की संख्या को कम से कम करें यह कई
प्रिंट बयान के उत्पादन को इकट्ठा करने से पहले करता है इससे पहले कि वे वास्तव में अपने मानक आउटपुट फाइल में लिखते हैं इस प्रक्रिया को आउटपुट बफ़रिंग कहा जाता है
जब पायथन टर्मिनल से जुड़ा होता है, तो इसकी आउटपुट को बफर नहीं करता है। यह समझ में आता है, क्योंकि टर्मिनल में इंसान आउटपुट को तुरंत देखना चाहता है।
जब पायथन एक फाइल (या एक पाइप) को लिख रहा है, तो इसका आउटपुट बफर करता है यह भी समझ में आता है, क्योंकि प्रक्रिया पूरी होने तक कोई भी आउटपुट नहीं देखेगा
आप
sys.stdout.flush () पर कॉल करके इस अनुकूलन को हराने के लिए जब भी आप बल चाहते हैं पायथन अपने बफ़र्ड आउटपुट को इसकी मानक आउटपुट फाइल में लिखने के लिए।
आपके मामले में, इसे आज़माएं:
आयात सिज़ ... संग्रह में आइटम के लिए: प्रिंट "क्या अप" sys.stdout.flush () #do जटिल सामान जो एक लंबा समय लगता है।
Comments
Post a Comment