ویرگول
ورودثبت نام
ayhan garabay
ayhan garabay
خواندن ۱ دقیقه·۲ سال پیش

ایجاد پردازش جدید در پایتون


در ابتدا فرض میکنیم تابعی با نام test() داریم که یک متن ساده را برای ما چاپ میکند. در حالت عادی برای صدا زدن تابع به صورت زیر عمل خواهیم کرد.

def test():
print("test function ran successfully!")

if __name__ == '__main__':
test()
در صورتی که کد به صورت بالا اجرا شود، هم برنامه اصلی و هم تابع test() در یک پردازنده اجرا و پردازش میشوند.

اما میخواهیم تابع test() در پردازنده دیگری از سیستم اجرا و پردازش شود.

ایجاد process جدید
برای این کار در زبان برنامه نویسی پایتون از ماژول multiprocessing کلاس Process را به برنامه خود اضافه میکنیم.

from multiprocessing import Process
حال با صدا زدن Process یک شئ از این کلاس ایجاد میکنیم تا بتوانیم تابع مورد نظر را به عنوان یک پردازش جدید اجرا کنیم.

برای ایجاد شئ از نوع Process کافی است نام تابع مورد نظر را به عنوان آرگومان target در هنگام صدا زدن سازنده کلاس ارسال کنیم. یعنی چیزی مشابه زیر:

p = Process(target=test)
اجرای پردازش ایجاد شده
اکنون که یک شئ از نوع فرآیند (Process) داریم، با فراخوانی تابع start() بر روی آن میتوانیم فرآیند را اجرا کنیم.

p.start()
پس از این فراخوانی، تابع test() به صورت یک پردازش جدید و در پردازنده ای دیگر اجرا خواهد شد.

جلوگیری از پیشروی برنامه فعلی تا اتمام اجرای پردازش
پس از start شدن پردازش، برنامه فعلی به اجرای خودش ادامه خواهد داد. اگر بخواهیم برنامه فعلی تا اتمام پردازش اجرا شده منتظر بماند و ادامه آن اجرا نشود، میتوانیم از تابع join() استفاده کنیم.

این تابع بر روی شئ فرآیند صدا زده شده و باعث میشود اجرای برنامه فعلی تا اتمام پردازش مورد نظر متوقف شود.

کد نهایی اجرای پردازش جدید به صورت زیر خواهد شد:

from multiprocessing import Process

def test():
print("test function ran successfully!")

if __name__ == '__main__':
p = Process(target=test)
p.start()
p.join()

# result:
# test function ran successfully!

T.m: t.me/ayhan_dev

ایجاد پردازش جدید در پایتونayhan mohammadiپایتونایجاد پردازشayhan dev
Developer Fullstack
شاید از این پست‌ها خوشتان بیاید