Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में Subprocess मॉड्यूल का उपयोग कैसे करें

प्रोसेस को समझना

जब आप विंडोज, मैक या लिनक्स पर प्रोग्राम कोड करते हैं और निष्पादित करते हैं, तो आपका ऑपरेटिंग सिस्टम एक प्रोसेस (सिंगल) बनाता है। यह CPU, RAM, डिस्क स्पेस जैसे सिस्टम रिसोर्सेज और ऑपरेटिंग सिस्टम के कर्नेल में डेटा संरचनाओं का उपयोग करता है। एक प्रोसेस अन्य प्रोसेसेज से अलग होता है - यह नहीं देख सकता कि अन्य प्रोसेस क्या कर रहे हैं या उनमें हस्तक्षेप नहीं कर सकता।

नोट: इस कोड को लिनक्स जैसे सिस्टम पर चलाना होगा। विंडोज पर चलाने पर एक्सेप्शन आ सकते हैं।

ऑपरेटिंग सिस्टम के लक्ष्य

OS के मुख्य दो लक्ष्य हैं: प्रोसेस के काम को निष्पक्ष रूप से फैलाना और यूज़र के प्रति उत्तरदायी होना। ये सभी चल रहे प्रोसेसेज को ट्रैक करके, प्रत्येक को चलाने के लिए थोड़ा समय देकर और फिर दूसरे पर स्विच करके प्राप्त किए जाते हैं। आप टास्क मैनेजर (विंडोज), एक्टिविटी मॉनिटर (macOS), या लिनक्स में top कमांड जैसे ग्राफिकल इंटरफेस के साथ अपने प्रोसेसेज की स्थिति देख सकते हैं।

प्रोग्रामर होने के नाते, हम अपने प्रोग्राम से प्रोसेस डेटा एक्सेस कर सकते हैं। कैसे? बस स्टैंडर्ड लाइब्रेरी OS मॉड्यूल का उपयोग करके। मैं आपको कुछ उदाहरण दिखाऊंगा।


# यह स्क्रिप्ट केवल लिनक्स/यूनिक्स पर काम करती है
import os
print(f" *** Process ID - {os.getpid()}")
print(f" *** My User ID - {os.getuid()} and My Group ID - {os.getgid()}")
print(f" *** Current Working Directory is - {os.getcwd()}")

एक नया सिस्टम प्रोसेस चलाना और स्पिन करना डेवलपर्स और सिस्टम एडमिनिस्ट्रेटर्स के लिए काफी उपयोगी हो सकता है जो विशिष्ट ऑपरेटिंग सिस्टम कार्यों को स्वचालित करना चाहते हैं।

पायथन में एक subprocess मॉड्यूल है, जो नए प्रोसेस स्पिन कर सकता है, प्रोसेसेज से जानकारी भेज और प्राप्त कर सकता है, और एरर और रिटर्न कोड भी संभाल सकता है।

आधिकारिक पायथन डॉक्यूमेंटेशन सिस्टम कमांड्स तक पहुंचने के लिए subprocess मॉड्यूल की सिफारिश करता है।

subprocess.call() फंक्शन कॉल की गई कमांड के समाप्त होने और आउटपुट पढ़ने का इंतजार करता है। हम सिस्टम की डिस्क स्पेस जानकारी निकालने के लिए नीचे कुछ उदाहरण देखेंगे।

उदाहरण: df -h कमांड एक्जीक्यूट करना


from io import StringIO
import pandas as pd
import subprocess
import ast

diskspace = "df"
diskspace_arg = "-h"
sp = subprocess.Popen([diskspace, diskspace_arg], stdout=subprocess.PIPE)
b = StringIO(sp.communicate()[0].decode('utf-8'))
df = pd.read_csv(b, sep=",")
print(df)

विस्तृत आउटपुट के लिए subprocess का उपयोग


from io import StringIO
import pandas as pd
import subprocess

def uname_func():
    uname = "uname"
    uname_arg = "-a"
    user_info = subprocess.call([uname, uname_arg])
    return user_info

def disk_func():
    diskspace = "pydf"
    diskspace_arg = "-a"
    discinfo_df = diskspace
    stdout = subprocess.check_output([diskspace, diskspace_arg])
    return stdout

def main():
    userinfo = uname_func()
    discinfo = disk_func()
    print("Displaying values now...")
    print(discinfo.decode('utf-8'))
    print(type(discinfo.decode('utf-8')))
    content = discinfo.decode('utf-8').split("\n")
    print(content)

main()
  1. Windows पर Python का उपयोग कैसे करें Windows पर Python का उपयोग कैसे करें

    सीखने और उपयोग करने के लिए सर्वोत्तम प्रोग्रामिंग भाषाओं में से एक के रूप में, यह कोई आश्चर्य नहीं है कि लाखों नए कोडर अपना ध्यान Python का उपयोग करना सीखने की ओर लगाते हैं। यह प्रवेश के लिए कम बाधा प्रदान करता है, सभी प्रमुख ऑपरेटिंग सिस्टम पर Python के लिए समर्थन के साथ, जिससे आप वेबसाइट्स से लेकर

  1. Python में Tkinter का उपयोग करके Title Bar Edit कैसे करें? Python में Tkinter का उपयोग करके Title Bar Edit कैसे करें?

    Tkinter एक window या frame बनाता है जो program execute करने के बाद दिखाई देता है। चूंकि Tkinter में सभी functions और modules independent हैं, हम window attributes को customize करने के लिए विशेष रूप से एक particular function का उपयोग कर सकते हैं। Tkinter हर एप्लिकेशन के लिए एक default root window बना

  1. Tkinter Python में Thread का उपयोग कैसे करें? Tkinter Python में Thread का उपयोग कैसे करें?

    Tkinter के साथ, हम Threading का उपयोग करके एक समय में multiple functions call कर सकते हैं। यह एप्लिकेशन में कुछ functions के asynchronous execution को प्रदान करता है। Python में thread का उपयोग करने के लिए, हम threading नामक module import कर सकते हैं और इसकी Thread class को subclass कर सकते हैं। अपन