برای اجرای همزمان چندین پروسه در پایتون، ابتدا باید پروسههای مختلف را ایجاد کنید و سپس آنها را شروع کرده و مدیریت کنید. در این بخش، به توضیح مراحل اجرای چند پروسه به صورت همزمان میپردازیم.
1. ایجاد پروسههای مختلف
برای ایجاد هر پروسه، میتوان از کلاس Process
استفاده کرد. این کلاس به شما امکان میدهد که تابعی را در هر پروسه اجرا کنید. در ابتدا، یک تابع ساده تعریف میکنیم که قرار است در پروسهها اجرا شود.
import multiprocessing
def worker(num):
print(f'Process {num} is running')
if __name__ == '__main__':
processes = []
for i in range(5): # ایجاد 5 پروسه
p = multiprocessing.Process(target=worker, args=(i,))
processes.append(p)
p.start() # شروع پروسه
for p in processes:
p.join() # منتظر پایان پروسهها میمانیم
در این مثال، پنج پروسه ایجاد میکنیم که هر کدام تابع worker
را اجرا میکنند. متد start()
پروسه را اجرا میکند، و متد join()
منتظر تمام شدن هر پروسه میماند تا اطمینان حاصل شود که همه پروسهها به پایان رسیدهاند.
2. مدیریت پروسهها
در مدیریت پروسهها، میتوان از متدهای زیر استفاده کرد:
-
start()
: این متد پروسه را آغاز میکند. زمانی که این متد فراخوانی میشود، پروسه به صورت موازی با سایر پروسهها اجرا میشود. -
join()
: این متد باعث میشود که برنامه اصلی منتظر شود تا پروسه مورد نظر تمام شود. اگر از این متد استفاده نکنید، برنامه اصلی ممکن است قبل از تمام شدن پروسهها خاتمه یابد. -
terminate()
: در صورتی که بخواهید یک پروسه را پیش از اتمام آن متوقف کنید، میتوانید از این متد استفاده کنید. این متد به طور اجباری پروسه را متوقف میکند.
3. مدیریت همزمانی پروسهها
زمانی که چندین پروسه به صورت همزمان در حال اجرا هستند، ممکن است نیاز به همزمانی و هماهنگی بین آنها داشته باشید. در این مواقع میتوانید از ابزارهایی مثل Queue
برای ارسال دادهها بین پروسهها استفاده کنید یا از قفلها (Lock
) برای جلوگیری از دسترسی همزمان به منابع مشترک بهره ببرید.
این شیوههای اجرایی به شما کمک میکند که بتوانید چندین پروسه را به صورت همزمان مدیریت و اجرا کنید و از منابع سیستم به بهترین نحو استفاده نمایید.