Warning: mkdir(): No space left on device in /var/www/tgoop/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/ninja_learn_ir/--): Failed to open stream: No such file or directory in /var/www/tgoop/post.php on line 50
Ninja Learn | نینجا لرن@ninja_learn_ir P.778
NINJA_LEARN_IR Telegram 778
خب خب خب، تسک های CPU Bound🔧
احتمالا CPU Bound به گوشتون خورده، همون تسک هایی که بار پردازشی سنگینی دارن. یعنی دیگه منتظر عملیات I/O(خوندن از فایل یا دیتابیس، API خارجی و...) نیستن و عملا انجام شدنشون توسط CPU طول میکشه.

‏CPU Bound
🧮
خب وقتی که به صورت عادی برناممون رو توسعه میدیم، برنامه ی ما فقط توی یک Process و یک هسته ی CPU اجرا میشه. اگه برنامه کار سنگینی مثل پردازش تصویر، محاسبات ریاضی فوق سنگین، الگوریتم های رمزنگاری و فشرده سازی و... داشته باشه، نتیجه اجرا شدنش توی یک Process چیزی بجز کندی و فشار روی CPU نیست. برای مثال شما یه CPU با ۸ هسته دارید ولی برنامه ای که نوشتید فقط روی یک هسته اجرا میشه.
توی این موقعیت میتونیم از Multi Processing استفاده کنیم.

‏Multi Processing یعنی چی؟
🧐
میتونیم با استفاده از Multi Processing برنامه ای که نوشتیم رو توی چند Process و روی چند هسته اجرا کنیم. اینجوری از تمام توان CPU استفاده میشه و در نتیجه هم برنامه ما سریع تر میشه و هم فشار روی هسته های CPU تقسیم میشه.

چرا Multi Threading مناسب نیست؟
💈
توی پایتون برای تسک های CPU ‌‌‌Bound نمیتونیم از Multi Threading استفاده کنیم. چون پایتون یه چیزی به اسم GIL داره که باعث میشه فقط یک Thread بتونه در لحظه اجرا بشه.
یعنی اگه برای تسک های CPU Bound ازش استفاده کنیم در عمل فقط یک Thread داره واقعا اجرا میشه.

استفاده از Multi Processing
🛠
با استفاده از ماژول multiprocessing میتونیم از محدودیت GIL عبور کنیم و چند process داشته باشیم.
یه مثال ساده:
from multiprocessing import Process

def cpu_bound_task():
# مثلاً محاسبه‌ی یک عدد بزرگ
total = 0
for i in range(10**7):
total += i
print(total)

if __name__ == '__main__':
processes = []
for _ in range(4):
p = Process(target=cpu_bound_task)
p.start()
processes.append(p)

for p in processes:
p.join()

این کد تابع cpu_bound_task رو همزمان توی ۴ تا process اجرا میکنه. هر process حافظه، thread و هسته ی CPU خودش رو داره. با اینکار میتونیم واقعا تسک های CPU Bound رو موازی اجرا کنیم و از مزایایی مثل سرعت بهتر بهره مند شیم.
اگه پروژتون بزرگه بهتره تسک های سنگین رو به سیستم هایی مثل Celery بسپرین و از worker های process-based استفاده کنید.

جمع بندی✍️
در نهایت، وقتی با برنامه‌ای سروکار داریم که CPU-bound هست، خیلی مهمه که درست تشخیص بدیم چه راه‌حلی برای بهینه‌سازی استفاده از منابع لازم داریم. توی پایتون، وقتی از multi threading استفاده می‌کنیم، به دلیل محدودیت GIL، همه‌ی پردازش‌ها روی یه هسته و یه thread اجرا می‌شن.
برای این‌که بتونیم از چند هسته‌ی CPU استفاده کنیم و پردازش‌های سنگین رو سریع‌تر انجام بدیم، باید از multi processing بهره بگیریم. با این روش، می‌تونیم هر بخش از برنامه رو به یک process جداگانه اختصاص بدیم که به طور مستقل و هم‌زمان روی هسته‌های مختلف CPU اجرا بشه.

#️⃣ #programmin #python


🥷🏻 CHANNEL | GROUP
👍102



tgoop.com/ninja_learn_ir/778
Create:
Last Update:

خب خب خب، تسک های CPU Bound🔧
احتمالا CPU Bound به گوشتون خورده، همون تسک هایی که بار پردازشی سنگینی دارن. یعنی دیگه منتظر عملیات I/O(خوندن از فایل یا دیتابیس، API خارجی و...) نیستن و عملا انجام شدنشون توسط CPU طول میکشه.

‏CPU Bound
🧮
خب وقتی که به صورت عادی برناممون رو توسعه میدیم، برنامه ی ما فقط توی یک Process و یک هسته ی CPU اجرا میشه. اگه برنامه کار سنگینی مثل پردازش تصویر، محاسبات ریاضی فوق سنگین، الگوریتم های رمزنگاری و فشرده سازی و... داشته باشه، نتیجه اجرا شدنش توی یک Process چیزی بجز کندی و فشار روی CPU نیست. برای مثال شما یه CPU با ۸ هسته دارید ولی برنامه ای که نوشتید فقط روی یک هسته اجرا میشه.
توی این موقعیت میتونیم از Multi Processing استفاده کنیم.

‏Multi Processing یعنی چی؟
🧐
میتونیم با استفاده از Multi Processing برنامه ای که نوشتیم رو توی چند Process و روی چند هسته اجرا کنیم. اینجوری از تمام توان CPU استفاده میشه و در نتیجه هم برنامه ما سریع تر میشه و هم فشار روی هسته های CPU تقسیم میشه.

چرا Multi Threading مناسب نیست؟
💈
توی پایتون برای تسک های CPU ‌‌‌Bound نمیتونیم از Multi Threading استفاده کنیم. چون پایتون یه چیزی به اسم GIL داره که باعث میشه فقط یک Thread بتونه در لحظه اجرا بشه.
یعنی اگه برای تسک های CPU Bound ازش استفاده کنیم در عمل فقط یک Thread داره واقعا اجرا میشه.

استفاده از Multi Processing
🛠
با استفاده از ماژول multiprocessing میتونیم از محدودیت GIL عبور کنیم و چند process داشته باشیم.
یه مثال ساده:

from multiprocessing import Process

def cpu_bound_task():
# مثلاً محاسبه‌ی یک عدد بزرگ
total = 0
for i in range(10**7):
total += i
print(total)

if __name__ == '__main__':
processes = []
for _ in range(4):
p = Process(target=cpu_bound_task)
p.start()
processes.append(p)

for p in processes:
p.join()

این کد تابع cpu_bound_task رو همزمان توی ۴ تا process اجرا میکنه. هر process حافظه، thread و هسته ی CPU خودش رو داره. با اینکار میتونیم واقعا تسک های CPU Bound رو موازی اجرا کنیم و از مزایایی مثل سرعت بهتر بهره مند شیم.
اگه پروژتون بزرگه بهتره تسک های سنگین رو به سیستم هایی مثل Celery بسپرین و از worker های process-based استفاده کنید.

جمع بندی✍️
در نهایت، وقتی با برنامه‌ای سروکار داریم که CPU-bound هست، خیلی مهمه که درست تشخیص بدیم چه راه‌حلی برای بهینه‌سازی استفاده از منابع لازم داریم. توی پایتون، وقتی از multi threading استفاده می‌کنیم، به دلیل محدودیت GIL، همه‌ی پردازش‌ها روی یه هسته و یه thread اجرا می‌شن.
برای این‌که بتونیم از چند هسته‌ی CPU استفاده کنیم و پردازش‌های سنگین رو سریع‌تر انجام بدیم، باید از multi processing بهره بگیریم. با این روش، می‌تونیم هر بخش از برنامه رو به یک process جداگانه اختصاص بدیم که به طور مستقل و هم‌زمان روی هسته‌های مختلف CPU اجرا بشه.

#️⃣ #programmin #python


🥷🏻 CHANNEL | GROUP

BY Ninja Learn | نینجا لرن


Share with your friend now:
tgoop.com/ninja_learn_ir/778

View MORE
Open in Telegram


Telegram News

Date: |

The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. How to Create a Private or Public Channel on Telegram? Activate up to 20 bots Write your hashtags in the language of your target audience. bank east asia october 20 kowloon
from us


Telegram Ninja Learn | نینجا لرن
FROM American