प्रक्रिया निष्पादन के दौरान निरंतर आउटपुट डिस्प्ले
पायथन स्क्रिप्ट में, हम अक्सर बाहरी कार्यक्रमों को निष्पादित करने के लिए उपप्रक्रियाओं का उपयोग करते हैं। हालाँकि यह एक शक्तिशाली क्षमता है, लेकिन इसके आउटपुट को पुनः प्राप्त करने से पहले किसी प्रक्रिया के पूरा होने की प्रतीक्षा करना निराशाजनक हो सकता है। इसे संबोधित करने के लिए, आइए प्रक्रिया के चलने के दौरान आउटपुट को लगातार स्ट्रीम करने की एक विधि का पता लगाएं।
परंपरागत रूप से, हम किसी प्रक्रिया के समाप्त होने के बाद उसके संपूर्ण आउटपुट को कैप्चर करने के लिए सबप्रोसेस.कम्यूनिकेट() का उपयोग करते हैं। हालाँकि, इस दृष्टिकोण के लिए किसी भी आउटपुट को प्रदर्शित करने से पहले प्रक्रिया को पूरी तरह से पूरा करने की आवश्यकता होती है।
निरंतर आउटपुट को सक्षम करने के लिए, हम fd.readline() के साथ मिलकर iter फ़ंक्शन का लाभ उठा सकते हैं। यह हमें प्रक्रिया की स्टडआउट स्ट्रीम पर पुनरावृति करने की अनुमति देता है, उपलब्ध होते ही लाइनों को कैप्चर करता है:
import subprocess
def execute(cmd):
popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True)
for stdout_line in iter(popen.stdout.readline, ""):
yield stdout_line
popen.stdout.close()
return_code = popen.wait()
if return_code:
raise subprocess.CalledProcessError(return_code, cmd)
इस उन्नत संस्करण में, जैसे ही यह उपलब्ध होता है, हम stdout की प्रत्येक पंक्ति उत्पन्न करते हैं। यह स्क्रिप्ट को आउटपुट को लगातार प्रदर्शित करने की अनुमति देता है क्योंकि यह प्रक्रिया द्वारा उत्पन्न होता है। ): प्रिंट (पथ, अंत = "")
इस दृष्टिकोण का उपयोग करके, हम खोज क्वेरी "ए" से मेल खाने वाले पथों को लगातार प्रदर्शित कर सकते हैं क्योंकि वे "पता लगाएँ" कमांड द्वारा पाए जाते हैं, वास्तविक समय पर प्रतिक्रिया प्रदान करते हैं प्रक्रिया की प्रगति।
यह तकनीक निरंतर आउटपुट मॉनिटरिंग की अनुमति देती है, बाहरी प्रक्रियाओं को लॉन्च करने वाली स्क्रिप्ट की अन्तरक्रियाशीलता और उपयोगकर्ता अनुभव को बढ़ाती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3