दिलचस्प पोस्ट
Android एप्लिकेशन के लिए आइकन सेट करें PHP में रिश्तेदार पथ शामिल है लिंक / बैक बटन के माध्यम से खोले जाने पर पृष्ठ / दृश्य / फॉर्म ताज़ा करने के लिए JSF को बल दें INSERT में और इसके साथ संयोजन / सीटीई JQuery का उपयोग करके एक <input type = "text"> (तुरंत) में सभी परिवर्तन खोजें एसवीजी में उत्पत्ति परिवर्तन कैसे करें त्रुटि: 'स्थानीय MySQL सर्वर से सॉकेट के माध्यम से कनेक्ट नहीं किया जा सकता' /var/run/mysqld/mysqld.sock '(2)' Socket.io 1.x: केवल WebSockets का उपयोग करें? क्यों / कब __declspec (dllimport) की आवश्यकता नहीं है? "प्रतीक्षा कार्य" के बीच कोई अंतर। वापसी; "और" वापसी कार्य। चला () "? जावास्क्रिप्ट की तारीख रेगेक्स डीडी / एमएम / वाई वाई वाई वाई क्या स्थानीय संग्रहण को एक्सेल में निर्यात करने के लिए किसी भी एचटीएमएल 5 फार्केनेस का उपयोग करना संभव है? Postgres में खोजशब्द-जैसी कॉलम नामों से बचें उपयोगकर्ताओं को एंट दर्ज करके फ़ॉर्म सबमिट करने से रोकें साझा प्राथमिकताओं में एक हैश मैप को सहेजना

अवरोधन और गैर अवरुद्ध उपप्रोसेस कॉल

मैं पूरी तरह से subprocess.call() , subprocess.Popen() , subprocess.check_call()subprocess.check_call() बीच भ्रमित हूं।

कौन अवरुद्ध है और कौन नहीं है?

मेरा क्या मतलब यह है कि क्या मैं subprocess.Popen() उपयोग करता हूं। subprocess.Popen() कि क्या मूल प्रक्रिया उसकी क्रियान्वयन पर रखने से पहले बाल प्रक्रिया return / exit प्रतीक्षा करता है या नहीं।

shell=True कैसे करता shell=True यह कॉल्स को प्रभावित करते हैं?

वेब के समाधान से एकत्रित समाधान "अवरोधन और गैर अवरुद्ध उपप्रोसेस कॉल"

Popen nonblocking है call और check_call अवरुद्ध कर रहे हैं। आप अपना wait या communicate पद्धति कॉल करके Popen इंस्टेंस ब्लॉक बना सकते हैं।

यदि आप सोर्स कोड में देखते हैं, तो आपको call कॉल Popen(...).wait() देखेंगे Popen(...).wait() , यही कारण है कि इसे अवरुद्ध कर रहा है check_call कॉल्स, यही वजह है कि इसे ब्लॉकों के रूप में भी जाना जाता है

सख्ती से बोल रहा हूँ, shell=True अवरुद्ध करने के मुद्दे पर ओर्थोगोनल है। हालांकि, shell=True पायथन को शेल निष्पादित करने के बाद और फिर शेल में कमांड चलाते हैं। अगर आप ब्लॉकिंग कॉल का उपयोग करते हैं, तो शेल समाप्त होने पर कॉल वापस आ जाएगी। चूंकि शेल कमांड को चलाने के लिए एक उप-प्रोसेस पैदा कर सकता है, इसलिए शैल उपप्रोसेस से पहले खत्म हो सकता है। उदाहरण के लिए,

 import subprocess import time proc = subprocess.Popen('ls -lRa /', shell=True) time.sleep(3) proc.terminate() proc.wait() 

यहां दो प्रक्रियाएं पैदा की जाती हैं: Popen एक शेल चलाने वाले उपप्रोसेन पैदा करता है। बदले में खोल एक उपप्रोसेस चल रहा ls proc.terminate() खोल को मारता है, लेकिन proc.terminate() चल रहा ls रहता है। (यह प्रचुर उत्पादन द्वारा प्रकट होता है, अजगर स्क्रिप्ट समाप्त हो जाने के बाद भी। pkill ls साथ ls को मारने के लिए तैयार रहें।)