python - Subprocess.Popen और os.system के बीच अंतर




(4)

os.system() और os.system() बीच क्या अंतर है?


Subprocess popen2 पर आधारित है, और इस तरह के कई फायदे हैं - यहां पीईपी में एक पूर्ण सूची है , लेकिन कुछ हैं:

  • खोल में पाइप का उपयोग कर
  • बेहतर न्यूलाइन समर्थन
  • अपवादों का बेहतर प्रबंधन

os.system यूनिक्स system कमांड के बराबर है, जबकि सबप्रोसेस एक सहायक और नियंत्रनीय इंटरफेस के साथ पॉपन कमांड द्वारा प्रदान की जाने वाली कई सुविधाएं प्रदान करने के लिए बनाया गया एक सहायक मॉड्यूल था। वे यूनिक्स पॉपन कमांड के समान डिजाइन किए गए थे।

system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed

जहाँ तक

The popen() function opens a process by creating a pipe, forking, and invoking the shell.

यदि आप सोच रहे हैं, किस का उपयोग करना है, तो निश्चित रूप से उपप्रोसेस का उपयोग करें क्योंकि आपके पास निष्पादन के लिए सभी सुविधाएं हैं, साथ ही प्रक्रिया पर अतिरिक्त नियंत्रण भी है।


विंडोज़ पर पाइथन (cpython) चलाते समय <built-in function system> os.system पर्दे _wsystem <built-in function system> तहत निष्पादित करेगा, जबकि यदि आप एक गैर-विंडोज़ ओएस का उपयोग कर रहे हैं, तो यह system उपयोग करेगा।

इसके विपरीत, पॉपन को विंडोज़ पर CreateProcess और _posixsubprocess.fork_exec आधारित ऑपरेटिंग सिस्टम में _posixsubprocess.fork_exec उपयोग करना चाहिए।

उस ने कहा, सलाह का एक महत्वपूर्ण टुकड़ा os.system डॉक्स से आता है, जो कहता है:

उपप्रोसेसर मॉड्यूल नई प्रक्रियाओं को बढ़ाने और उनके परिणामों को पुनर्प्राप्त करने के लिए और अधिक शक्तिशाली सुविधाएं प्रदान करता है; उस मॉड्यूल का उपयोग इस समारोह का उपयोग करने के लिए बेहतर है। कुछ उपयोगी व्यंजनों के लिए सबप्रोसेस दस्तावेज में उपप्रोसेस मॉड्यूल अनुभाग के साथ पुराने कार्यों को प्रतिस्थापित करना देखें।


subprocess.Popen() os.system() का सख्त सुपर-सेट है।





system