آموزش کد چند فرآیندی (Multiprocessing) در پایتون 🐍
مقدمه
چند فرآیندی یا Multiprocessing یکی از تکنیکهای مهم در برنامهنویسی موازی است که به شما امکان میدهد تا چندین فرآیند را به طور همزمان اجرا کنید. این تکنیک به خصوص برای بهرهبرداری از پردازندههای چند هستهای بسیار مفید است و میتواند عملکرد برنامههای شما را بهبود بخشد.
مفهوم اولیه
در پایتون، کتابخانهی multiprocessing ابزارهای لازم برای اجرای چند فرآیندی را فراهم میکند. این کتابخانه به شما امکان میدهد تا از فرآیندهای جداگانه برای اجرای وظایف مختلف استفاده کنید.
مثال کد
توضیحات:
1. ایمپورت کتابخانهی multiprocessing:
2. تعریف تابع worker:
این تابع ساده، یک عدد را به عنوان ورودی میگیرد و آن را چاپ میکند و سپس به مدت ۲ ثانیه توقف میکند.
3. ایجاد و شروع فرآیندها:
در بلوک
4. منتظر ماندن برای اتمام فرآیندها:
با استفاده از
نکات مهم
1. به اشتراکگذاری دادهها:
کتابخانهی
2. امنیت و مدیریت منابع:
اطمینان حاصل کنید که فرآیندها منابع سیستم را به درستی مدیریت میکنند و از مشکلاتی مانند مصرف بیش از حد حافظه جلوگیری کنید.
3. استفاده از CPU های چند هستهای:
چند فرآیندی به شما امکان میدهد از قدرت پردازشی چند هستهای بهره ببرید و برنامههای خود را سریعتر اجرا کنید.
نتیجهگیری
چند فرآیندی در پایتون ابزاری قدرتمند برای بهبود کارایی برنامهها است. با استفاده از کتابخانهی
این تکنیک میتواند به شما کمک کند تا برنامههای پیچیده و زمانبر خود را بهینه کنید و عملکرد بهتری را تجربه کنید. 🎉
🔻برای بیشتر یاد گرفتن بیا اینجا
#Python #Multiprocessing #Programming #ParallelComputing
مقدمه
چند فرآیندی یا Multiprocessing یکی از تکنیکهای مهم در برنامهنویسی موازی است که به شما امکان میدهد تا چندین فرآیند را به طور همزمان اجرا کنید. این تکنیک به خصوص برای بهرهبرداری از پردازندههای چند هستهای بسیار مفید است و میتواند عملکرد برنامههای شما را بهبود بخشد.
مفهوم اولیه
در پایتون، کتابخانهی multiprocessing ابزارهای لازم برای اجرای چند فرآیندی را فراهم میکند. این کتابخانه به شما امکان میدهد تا از فرآیندهای جداگانه برای اجرای وظایف مختلف استفاده کنید.
مثال کد
import multiprocessing
import time
def worker(num):
"""فرآیند نمونه ای که فقط یک عدد را چاپ میکند."""
print(f'Worker: {num}')
time.sleep(2)
if __name__ == '__main__':
processes = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
processes.append(p)
p.start()
for p in processes:
p.join()
توضیحات:
1. ایمپورت کتابخانهی multiprocessing:
import multiprocessing
import time
2. تعریف تابع worker:
این تابع ساده، یک عدد را به عنوان ورودی میگیرد و آن را چاپ میکند و سپس به مدت ۲ ثانیه توقف میکند.
def worker(num):
print(f'Worker: {num}')
time.sleep(2)
3. ایجاد و شروع فرآیندها:
در بلوک
if __name__ == '__main__':
، ما پنج فرآیند ایجاد کرده و آنها را با استفاده از start()
آغاز میname if __name__ == '__main__':
processes = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
processes.append(p)
p.start()
4. منتظر ماندن برای اتمام فرآیندها:
با استفاده از
join()
، ما مطمئن میشویم که تمامی فرآیندها قبل از پایان یافتن برنامه اصلی به اتمام رسیدهاند.for p in processes:
p.join()
نکات مهم
1. به اشتراکگذاری دادهها:
کتابخانهی
multiprocessing
ابزارهایی مانند Queue
, Pipe
, Manager
برای به اشتراکگذاری دادهها بین فرآیندها فراهم میکند.2. امنیت و مدیریت منابع:
اطمینان حاصل کنید که فرآیندها منابع سیستم را به درستی مدیریت میکنند و از مشکلاتی مانند مصرف بیش از حد حافظه جلوگیری کنید.
3. استفاده از CPU های چند هستهای:
چند فرآیندی به شما امکان میدهد از قدرت پردازشی چند هستهای بهره ببرید و برنامههای خود را سریعتر اجرا کنید.
نتیجهگیری
چند فرآیندی در پایتون ابزاری قدرتمند برای بهبود کارایی برنامهها است. با استفاده از کتابخانهی
multiprocessing
، میتوانید به راحتی وظایف مختلف را به فرآیندهای جداگانه محول کنید و از توان پردازشی سیستم خود به بهترین نحو استفاده کنید.این تکنیک میتواند به شما کمک کند تا برنامههای پیچیده و زمانبر خود را بهینه کنید و عملکرد بهتری را تجربه کنید. 🎉
🔻برای بیشتر یاد گرفتن بیا اینجا
#Python #Multiprocessing #Programming #ParallelComputing
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍2
استفاده از پردازش چند هستهای CPU در پایتون
پایتون به کمک کتابخانههای مختلفی امکان بهرهبرداری از پردازندههای چند هستهای را فراهم میکند. این قابلیت به خصوص برای اجرای همزمان وظایف در برنامههای بزرگ و پیچیده بسیار مفید است. در این آموزش، از کوچکترین برنامهها تا بزرگترین و پیچیدهترین برنامهها، روشهایی برای استفاده از پردازش چند هستهای را معرفی میکنیم.
مثال ساده: پردازش همزمان وظایف ساده
برای شروع، یک برنامه ساده با استفاده از کتابخانهی
کد:
توضیحات:
1. ایمپورت کتابخانهی
این کتابخانهها برای ایجاد و مدیریت فرآیندها و توقف زمان استفاده میشوند.
2. تعریف تابع
این تابع یک عدد را به عنوان ورودی میگیرد و آن را چاپ میکند، سپس برای ۲ ثانیه متوقف میشایجاد و شروع فرآیندهاآیندها:
با استفاده از
با استفاده از
مثال پیشرفته: استفاده از
برای مدیریت بهتر تعداد زیادی از وظایف، میتوان از کلاس
کد:
توضیحات:
1. ایمپورت کتابخانهی
این کتابخانهها برای ایجاد و مدیریت فرآیندها و توقف زمان اتعریف تابع worker*تعریف تابع
این تابع یک عدد را به عنوان ورودی میگیرد و آن را چاپ میکند، سپس برااستفاده از Pool **استفاده از
با استفاده از
مثال پیشرفتهتر: استفاده از
کتابخانهی
کد:
توضیحات:
1. ایمپورت کتابخانهی
این کتابخانهها برای ایجاد و مدیریت فرتعریف تابع workerشوند.
2. تعریف تابع
این تابع یک عدد را به عنوان ورودی میگیرد و آن را چاپ میکند، سپساستفاده از ProcessPoolExecutorاستفاده از
با استفاده از
استفاده از پردازش چند هستهای در پایتون میتواند به بهبود کارایی برنامهها کمک کند. با استفاده از کتابخانههایی مانند
🔻برای بیشتر یاد گرفتن بیا اینجا
#Python #Multiprocessing #ConcurrentProgramming #ParallelComputing #ProgrammingTips
پایتون به کمک کتابخانههای مختلفی امکان بهرهبرداری از پردازندههای چند هستهای را فراهم میکند. این قابلیت به خصوص برای اجرای همزمان وظایف در برنامههای بزرگ و پیچیده بسیار مفید است. در این آموزش، از کوچکترین برنامهها تا بزرگترین و پیچیدهترین برنامهها، روشهایی برای استفاده از پردازش چند هستهای را معرفی میکنیم.
مثال ساده: پردازش همزمان وظایف ساده
برای شروع، یک برنامه ساده با استفاده از کتابخانهی
multiprocessing
ایجاد میکنیم که چندین وظیفه را همزمان اجرا کند.کد:
import multiprocessing
import time
def worker(num):
"""یک وظیفه ساده که عدد ورودی را چاپ میکند و برای ۲ ثانیه متوقف میشود."""
print(f'Worker: {num}')
time.sleep(2)
if __name__ == '__main__':
processes = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
processes.append(p)
p.start()
for p in processes:
p.join()
توضیحات:
1. ایمپورت کتابخانهی
multiprocessing
و time
:این کتابخانهها برای ایجاد و مدیریت فرآیندها و توقف زمان استفاده میشوند.
2. تعریف تابع
worker
:این تابع یک عدد را به عنوان ورودی میگیرد و آن را چاپ میکند، سپس برای ۲ ثانیه متوقف میشایجاد و شروع فرآیندهاآیندها:
با استفاده از
multiprocessing.Process
، پنج فرآیند ایجاد میکنیم و آنها را با استفاده از start()
آغاز میکنمنتظر ماندن برای اتمام فرآیندهاآیندها**:با استفاده از
join()
، مطمئن میشویم که تمامی فرآیندها قبل از پایان یافتن برنامه اصلی به اتمام رسیدهاند.مثال پیشرفته: استفاده از
Pool
برای مدیریت وظایفبرای مدیریت بهتر تعداد زیادی از وظایف، میتوان از کلاس
Pool
استفاده کرد. این روش به شما امکان میدهد که تعداد ثابتی از فرآیندها را ایجاد کرده و وظایف را بیکد:ید.کد:
import multiprocessing
import time
def worker(num):
"""یک وظیفه ساده که عدد ورودی را چاپ میکند و برای ۲ ثانیه متوقف میشود."""
print(f'Worker: {num}')
time.sleep(2)
if __name__ == '__main__':
with multiprocessing.Pool(processes=4) as pool:
pool.map(worker, range(10))
توضیحات:
1. ایمپورت کتابخانهی
multiprocessing
و time
:این کتابخانهها برای ایجاد و مدیریت فرآیندها و توقف زمان اتعریف تابع worker*تعریف تابع
worker
**:این تابع یک عدد را به عنوان ورودی میگیرد و آن را چاپ میکند، سپس برااستفاده از Pool **استفاده از
Pool
**:با استفاده از
multiprocessing.Pool
، یک استخر از ۴ فرآیند ایجاد میکنیم و از متد map
برای اجرای تابع worker
برای هر عدد از ۰ تا ۹ استفاده میکنیم.مثال پیشرفتهتر: استفاده از
concurrent.futures
برای مدیریت وظایفکتابخانهی
concurrent.futures
یکی دیگر از ابزارهای پایتون برای مدیریت پردازشهای همزمان است. این کتابخانه برای سادهتر کردن استفاده کد: طراحی شده است.کد:
from concurrent.futures import ProcessPoolExecutor
import time
def worker(num):
"""یک وظیفه ساده که عدد ورودی را چاپ میکند و برای ۲ ثانیه متوقف میشود."""
print(f'Worker: {num}')
time.sleep(2)
if __name__ == '__main__':
with ProcessPoolExecutor(max_workers=4) as executor:
executor.map(worker, range(10))
توضیحات:
1. ایمپورت کتابخانهی
concurrent.futures
و time
:این کتابخانهها برای ایجاد و مدیریت فرتعریف تابع workerشوند.
2. تعریف تابع
worker
:این تابع یک عدد را به عنوان ورودی میگیرد و آن را چاپ میکند، سپساستفاده از ProcessPoolExecutorاستفاده از
ProcessPoolExecutor
**:با استفاده از
ProcessPoolExecutor
، یک استخر از ۴ فرآیند ایجاد میکنیم و از متد map
برای اجرای تابع worker
برای هر عدد از ۰ تا ۹ استفاده میکنیم.استفاده از پردازش چند هستهای در پایتون میتواند به بهبود کارایی برنامهها کمک کند. با استفاده از کتابخانههایی مانند
multiprocessing
و concurrent.futures
، میتوان وظایف مختلف را به طور همزمان اجرا کرد و از توان پردازشی سیستم به بهترین نحو استفاده کرد.🔻برای بیشتر یاد گرفتن بیا اینجا
#Python #Multiprocessing #ConcurrentProgramming #ParallelComputing #ProgrammingTips
👍2