☀️ پردازش موازی در پایتون

5/5 - (2 امتیاز)


در خواست ابر رایانه شبیه سازان امیرکبیر

پردازش موازی یک روش برنامه‌نویسی است که به برنامه‌نویسان اجازه می‌دهد که برنامه‌های خود را به گونه‌ای طراحی کنند که قسمت‌های مختلف آن‌ها همزمان اجرا شوند و بدین ترتیب، زمان اجرای آن‌ها کاهش یابد. در پایتون نیز امکان پردازش موازی وجود دارد. چندین روش برای پردازش موازی در پایتون وجود دارد که از جمله آن‌ها می‌توان به استفاده از روش‌های موجود در کتابخانه‌های multiprocessing، threading و concurrent.futures اشاره کرد. در زیر یک مثال ساده از هر یک از این روش‌ها را ارائه می‌دهم:

۱. استفاده از کتابخانه multiprocessing:

pythonimport multiprocessing

def worker(num):


"""برای محاسبه مربع یک عدد"""


print(num*num)


if __name__ == '__main__':


# تعداد پردازه‌ها مشخص می‌شود


processes = []


for i in range(10):


p = multiprocessing.Process(target=worker, args=(i,))


processes.append(p)


p.start()


for process in processes:


process.join()

۲. استفاده از کتابخانه threading:

pythonimport threading

def worker(num):


"""برای محاسبه مربع یک عدد"""


print(num*num)


if __name__ == '__main__':


# تعداد رشته‌ها مشخص می‌شود


threads = []


for i in range(10):


t = threading.Thread(target=worker, args=(i,))


threads.append(t)


t.start()


for thread in threads:


thread.join()

۳. استفاده از کتابخانه concurrent.futures:

pythonimport concurrent.futures

def worker(num):


"""برای محاسبه مربع یک عدد"""


print(num*num)


if __name__ == '__main__':


# تعداد فرآیندها مشخص می‌شود


with concurrent.futures.ProcessPoolExecutor() as executor:


executor.map(worker, range(10))

در این مثال‌ها، تعداد مربع اعداد از ۰ تا ۹ به صورت همزمان محاسبه می‌شود. لازم به ذکر است که برای برنامه‌های واقعی و پیچیده‌تر نیز می‌توان از این روش‌ها بهره برد و بهترین روش را بر اساس نیاز و شرایط مربوطه انتخاب کرد.

در اینجا می‌توانید از پایتون بیشتر بدانید.

 

 


در خواست ابر رایانه شبیه سازان امیرکبیر

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *