जब एक पायथन स्क्रिप्ट से grep जैसे कमांड को मुद्रित आउटपुट पाइप करते हैं, तो स्क्रिप्ट से आउटपुट केवल संपूर्ण स्क्रिप्ट के पूरा होने के बाद फॉलो-अप कमांड पर पाइप किया जाता है।क्या वर्तमान में निष्पादित पायथन प्रोग्राम से आउटपुट पाइप लाइन-बाय-लाइन होने का कोई तरीका है?
उदाहरण के लिए, एक स्क्रिप्ट test_grep.py
निम्नलिखित की तरह में:
#!/usr/bin/env python
from time import sleep
print "message1"
sleep(5)
print "message2"
sleep(5)
print "message3"
जब ./test_grep.py | grep message
साथ कहा जाता है, कुछ भी नहीं 10 सेकंड है, जो समय में सभी तीन लाइनों दिखाई देगा के लिए दिखाई देगा।
एक स्क्रिप्ट test_grep.sh
को यह तुलना करें:
#!/usr/bin/env bash
echo "message1"
sleep 5
echo "message2"
sleep 5
echo "message3"
./test_grep.sh | grep message
तुरंत उत्पादन होगा message1
, message2
और message3
से 5 सेकंड के अंतराल पर पीछा किया।
मुझे उम्मीद है कि ऐसा इसलिए है क्योंकि केवल एक बार पाइथन दुभाषिया निष्पादन समाप्त करने के बाद ही अगले आदेश के लिए उपलब्ध आउटपुट उपलब्ध होता है। क्या इस व्यवहार को बदलने का कोई तरीका है?
दिलचस्प सवाल :) –