مدیریت فرآیندها یکی از بخش‌های مهم هر برنامه است که امکان اجرای و کنترل فرآیندهای سیستم عامل را فراهم می‌آورد. ماژول os در پایتون امکانات مفیدی برای کار با فرآیندها در اختیار ما قرار می‌دهد. در این مقاله، به بررسی نحوه ایجاد، کنترل و پایان دادن و در کل مدیریت فرآیندها با کتابخانه OS خواهیم پرداخت.

1. اجرای یک فرآیند جدید

برای اجرای یک فرآیند جدید می‌توانیم از تابع os.system() یا os.exec*() استفاده کنیم.

استفاده از os.system()

تابع os.system() یک دستور سیستم را به عنوان یک رشته اجرا می‌کند و از آن انتظار می‌رود که به اتمام برسد.

import os

# اجرای یک دستور
os.system("echo Hello, World!")

استفاده از os.exec*()

تابع‌های os.exec*() به شما این امکان را می‌دهند که یک برنامه جدید را در حال حاضر جایگزین فرآیند فعلی کنید.

import os

# اجرای یک برنامه جدید
os.execvp("ls", ["ls", "-l"])

2. ایجاد یک فرآیند جدید با subprocess

برای داشتن کنترل بیشتر بر روی فرآیندها، می‌توانیم از ماژول subprocess استفاده کنیم. این ماژول به شما این امکان را می‌دهد که فرآیندها را به راحتی ایجاد کرده و با آن‌ها تعامل داشته باشید.

اجرای یک فرآیند و دریافت خروجی

import subprocess

# اجرای یک دستور و دریافت خروجی
result = subprocess.run(["echo", "Hello, World!"], capture_output=True, text=True)
print(result.stdout)

3. مدیریت فرآیندها

به دست آوردن شناسه فرآیند (PID)

پس از ایجاد یک فرآیند، ممکن است بخواهید شناسه آن را دریافت کنید. در اینجا از os.fork() استفاده می‌کنیم که فرآیند جدیدی ایجاد می‌کند و شناسه آن‌ها را مجزا می‌سازد.

import os

# ایجاد یک فرآیند جدید
pid = os.fork()

if pid == :
    # این بلاک برای فرزند است
    print(f"فرزند با PID {os.getpid()} در حال اجراست.")
else:
    # این بلاک برای والد است
    print(f"والد با PID {os.getpid()} و PID فرزند {pid} است.")

پایان دادن به یک فرآیند

برای پایان دادن به یک فرآیند می‌توانید از os.kill() استفاده کنید که به شما این امکان را می‌دهد که سیگنال خاصی به یک فرآیند ارسال کنید.

import os
import signal

# فرض کنید شناسه فرآیند `pid` که می‌خواهیم پایان دهیم مشخص است.
os.kill(pid, signal.SIGTERM)  # ارسال سیگنال پایان به فرآیند

آموزش کتابخانه OS پایتون (رایگان)

4. مدیریت چند فرآیند

با استفاده از ماژول subprocess می‌توانید چندین فرآیند را به طور همزمان مدیریت کنید.

import subprocess

# اجرای چندین دستور به طور همزمان
processes = []
commands = [["ping", "-c", "4", "google.com"], ["ping", "-c", "4", "yahoo.com"]]

for command in commands:
    processes.append(subprocess.Popen(command))

# انتظار برای اتمام تمامی فرآیندها
for process in processes:
    process.wait()

نتیجه‌ گیری

میتوان مدیریت فرآیندها با کتابخانه OS در پایتون، می‌توانید به راحتی فرآیندها را ایجاد، کنترل و مدیریت کنید. این قابلیت‌ها به شما امکان می‌دهد تا نرم‌افزارهای خود را به‌طور بهینه و مؤثر اجرا و کنترل کنید. مدیریت دقیق فرآیندها می‌تواند در بهبود عملکرد و کارایی برنامه‌های شما تأثیر زیادی داشته باشد.