কম্পিউটার টিউটোরিয়াল

পাইথনে সাবপ্রসেস মডিউল ব্যবহারের পদ্ধতি

প্রসেস বোঝা

যখন আপনি কোনো প্রোগ্রাম লিখে এক্সিকিউট করেন (Windows, Mac, Linux-এ), আপনার অপারেটিং সিস্টেম একটি প্রসেস তৈরি করে। এটি CPU, RAM, ডিস্ক স্পেস এবং কার্নেল ডেটা স্ট্রাকচার ব্যবহার করে। একটি প্রসেস অন্য প্রসেস থেকে Изোলেটেড থাকে।

অপারেটিং সিস্টেমের লক্ষ্য

প্রসেসগুলোর কাজ ন্যায়সঙ্গত বাঁটা এবং ইউজারের প্রতি রেসপন্সিভ থাকা। এটি সব রানিং প্রসেস ট্র্যাক করে, প্রতিটির একটু সময় দিয়ে অন্য প্রসেসে স্যুইচ করে। Windows-এ Task Manager, macOS-এ Activity Monitor, Linux-এ 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 - {os.getcwd()}")

subprocess মডিউল

নতুন সিস্টেম প্রসেস স্পিন আপ করা ডেভেলপার এবং সিস্টেম অ্যাডমিনের জন্য উপকারী। পাইথনের subprocess মডিউল নতুন প্রসেস তৈরি করতে, ইনফরমেশন পাঠানো/প্রাপ্ত করতে এবং এরর/রিটার্ন কোড হ্যান্ডল করতে পারে। অফিশিয়াল ডকুমেন্টেশন সিস্টেম কমান্ড এক্সেসের জন্য এই মডিউল রিকমেন্ড করে।

subprocess.call() কল করা কমান্ড ফিনিশ হওয়া পর্যন্ত অপেক্ষা করে।

উদাহরণ: ডিস্ক স্পেস এক্সট্র্যাক্ট (df -h)


from io import StringIO
import pandas as pd
import subprocess

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)

বিস্তারিত আউটপুটের জন্য


import subprocess

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

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

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

main()

আউটপুট


Linux ip-00-000-00-000.xxxx.xxxx.xx.xx 0.00.0-000.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 GNU/Linux
Displaying values now...
Filesystem Size Used Avail Use% Mounted on
/dev/xvda2 20G 16G 4318M 78.9 [#####.] /
devtmpfs 7918M 0 7918M 0.0 [......] /dev
...
  1. উইন্ডোজে পাইথন ব্যবহার করার পূর্ণ নির্দেশিকা

  2. পাইথনে Tkinter ব্যবহার করে টাইটেল বার এডিট করা

  3. Tkinter Python-এ Thread ব্যবহার করার পদ্ধতি

  4. পাইথনে ল্যাম্বডা ফাংশন ব্যবহারের পদ্ধতি