counterexample

فعلن فقط برنامه نویسی

counterexample

فعلن فقط برنامه نویسی

يكشنبه, ۵ مرداد ۱۳۹۹، ۰۱:۵۷ ق.ظ

۰

multiprocessing و threading در پایتون

يكشنبه, ۵ مرداد ۱۳۹۹، ۰۱:۵۷ ق.ظ

فرض کنید یک روال تکراری رو قراره چندین بار انجام بدید که نتایج این تکرار ها به هم وابسته نیستند. در این مواقع میتوان به سمت موازی سازی رفت.

مثلا فرض کنید میخواهید تعدادی عکس را از آدرس اینترنتی آنها دریافت و روی آنها یک فیلتر گاوسی اعمال کرده و درنهایت عمل ذخیره سازی را انجام دهید.

فرض کنید توسط یک حلقه این کار را پیاده سازی کنید که در هر دور اجرای حلقه یکی از عکس ها از لیست عکسها (img_names) وارد روندی که در بالا توضیح داده شد، میشود.

 

 

پس از اجرای کد بالا همانطور که میبینید اجرای آن ۲۲ ثانیه زمان برده است!

اما اگر از ماژولهای موازی سازی کمک بگیریم در این صورت طی ۷ ثانیه کل عملیات انجام خواهد شد.:

در ابتدا باید این خط را وارد کنید:

 

 

import concurrent.futures

 

همچنین اگر به جای ProcessPoolExecutor از ThreadPoolExecutor استفاده کنیم حتی بازهم بهبود زمانی خواهیم داشت.

گرچه ThreadPoolExecutor از نظر زمانی در این مورد بهتر عمل میکند اما این دو حالت تفاوتهای بنیادی دارند که باید بدانیم هر یک را در چه مواقعی به کار ببریم. کافیست تفاوتهای مربوط به multiprocessing و threading را بدانیم تا مورد استفاده ی هر یک از آنها را بشناسیم. چرا که ممکن است بعضی مواقع در عین حال که یکی از این دو از نظر زمانی بهتر عمل میکنند اما صرفا زمان مهم نیست و ممکن است حالت سریعتر حالت منطقی نبوده و دچار مشکلات منطقی شویم.

 

 در تصویر زیر به تفاوت های multiprocessing و threading در پایتون اشاره شده است:


امیدوارم مطالب این پست مفید بوده باشند.

منبع عکسهای این پست، ویدیوهای زیر هستند، اگر درک موارد بالا برایتان دشوار بود حتما از این ویدیو ها کمک بگیرید:

https://www.youtube.com/watch?v=fKl2JW_qrso

https://www.youtube.com/watch?v=ecKWiaHCEKs

 

 

موافقین ۰ مخالفین ۰ ۹۹/۰۵/۰۵
counter example

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">