آموزش بنچ مارکینگ و پروفایل در همزمانی پایتون

4 سال پیش
آموزش بنچ مارکینگ و پروفایل در همزمانی پایتون
امتیاز دهید post

آموزش بنچ مارکینگ و پروفایل در همزمانی پایتون

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

پیشنهاد ویژه : پکیج آموزش پروژه محور پایتون

در این درس، ما خواهیم آموخت که چگونه بنچ مارکینگ و پروفایل در رسیدگی به مشکلات عملکردی کمک می کند.
فرض کنید ما کدی نوشتیم و این نیز نتیجه مطلوبی را می دهد اما اگر بخواهیم این کد را کمی سریعتر اجرا کنیم زیرا نیازها تغییر کرده است چه می شود. در این حالت، باید بفهمیم چه قسمت هایی از کد ما کل برنامه را کند می کند. در این حالت، بنچ مارکینگ و نمایه سازی می تواند مفید باشد.

بنچ مارکینگ چیست؟

هدف گذاری بنچ مارکینگ ارزیابی چیزی یا مقایسه با استاندارد است. با این حال ، سوالی که در اینجا مطرح می شود این است که معیار تعیین کننده چیست و چرا در صورت برنامه نویسی نرم افزار به آن نیاز داریم. بنچ مارکینگ کد به معنای سرعت اجرای کد است. یک دلیل عمده برای بنچ مارکینگ بهینه سازی کد است.

بنچ مارکینگ چگونه کار می کند؟

اگر ما در مورد کار معیار زدن صحبت می کنیم ، باید با محک زدن کل برنامه به عنوان یک حالت فعلی شروع کنیم و سپس می توانیم معیارهای خرد را ترکیب کنیم و سپس یک برنامه را به برنامه های کوچکتر تجزیه کنیم. به منظور یافتن گلوگاه های موجود در برنامه ما و بهینه سازی آن. به عبارت دیگر ، ما می توانیم آن را به عنوان شکستن مشکل بزرگ و سخت به مجموعه ای از مشکلات کوچکتر و کمی آسان تر برای بهینه سازی آنها درک کنیم.

ماژول پایتون برای بنچ مارکینگ

در پایتون، ماژولی به طور پیش فرض برای بنچ مارکینگ داریم که timeit نامیده می شود. با کمک ماژول timeit می توانیم تابع کمی از کد پایتون را در برنامه اصلی خود بسنجیم.

مثال

در اسکریپت پایتون زیر ، ما در حال وارد کردن ماژول timeit هستیم، که مدت زمان بیشتری را برای اجرای دو تابع اندازه می گیرد – functionA و functionB –

پس از اجرای اسکریپت فوق، زمان اجرای هر دو تابع را همانطور که در زیر نشان داده شده است ، بدست خواهیم آورد.

خروجی


 

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

در پایتون می توانیم تایمر خود را ایجاد کنیم که دقیقاً مانند ماژول timeit عمل خواهد کرد. می توان آن را با کمک تابع دکوراتور انجام داد. در زیر مثالی از تایمر سفارشی آورده شده است

 

اسکریپت پایتون فوق در وارد کردن ماژول های زمان تصادفی کمک می کند. ما عملکرد دکوراتور () timer_func را ایجاد کرده ایم. این تابع () function_timer را درون خود دارد. اکنون، تابع تو در تو زمان قبل از فراخوانی تابع عبور را می گیرد. سپس منتظر می ماند تا تابع برگردد و زمان پایان را می گیرد. به این ترتیب، در نهایت می توانیم اسکریپت پایتون را وادار به چاپ زمان اجرا کنیم. اسکریپت همانطور که در زیر نشان داده شده است ، خروجی ایجاد می کند.

خروجی


 

پروفایل چیست؟

گاهی اوقات برنامه نویس می خواهد برخی ویژگی ها مانند استفاده از حافظه، پیچیدگی زمان یا استفاده از دستورالعمل های خاص در مورد برنامه ها را اندازه گیری کند تا قابلیت واقعی آن برنامه را اندازه گیری کند. چنین نوعی اندازه گیری در مورد برنامه، پروفایل نامیده می شود. پروفایل از تجزیه و تحلیل برنامه پویا برای انجام چنین اندازه گیری استفاده می کند.

cProfile – ماژول داخلی

cProfile ماژول داخلی پایتون برای پروفایل است. این ماژول یک پسوند C با سربار مناسب است که آن را برای پروفایل برنامه های طولانی مدت مناسب می کند. پس از اجرای آن، همه توابع و زمان اجرا را ثبت می کند. بسیار قدرتمند است اما گاهی اوقات تفسیر و عمل به آن کمی دشوار است. در مثال زیر، ما از cProfile روی کد زیر استفاده می کنیم –

مثال

 

کد فوق در فایل thread_increment.py ذخیره می شود. اکنون کد را با cProfile در خط فرمان به صورت زیر اجرا کنید

 

 

از خروجی فوق، مشخص است که cProfile تمام 3577 تابع فراخوانی شده را با زمان صرف شده در هر و تعداد دفعات فراخوانی چاپ می کند. دنباله ها ستونی هستند که ما در خروجی داریم –
  • ncalls – تعداد فراخوانی ها را مشخص می کند
  • tottime – کل زمان صرف شده در تابع داده شده است.
  • percall – به ضریب tottime تقسیم بر ncalls اشاره دارد.
  • cumtime – زمان تجمعی است که در این زیر مجموعه و همه زیرمجموعه ها صرف می شود. حتی برای توابع بازگشتی نیز دقیق است.
  • percall – این ضریب زمان کومیت است که با فراخوانی ها تقسیم می شود.
  • (filename:lineno(function – اساساً داده های مربوط به هر تابع را فراهم می کند.

 

منبع.

لیست جلسات قبل آموزش همزبانی در پایتون

  1. آموزش همزمانی در برنامه نویسی پایتون
  2. آموزش همزمانی در برنامه نویسی پایتون _ مقدمه
  3. آموزش معماری سیستم و حافظه در برنامه نویسی پایتون
  4.  آموزش رشته ها در همزمانی پایتون 
  5. آموزش پیاده سازی رشته در همزمانی پایتون
  6. آموزش همگام سازی رشته ها در همزمانی پایتون
  7. آموزش ارتباط رشته ها در همزمانی پایتون
  8. آموزش تست برنامه های رشته در همزمانی پایتون
  9. اشکال زدایی از برنامه های رشته در همزمانی پایتون
امتیاز دهید post
0
برچسب ها :
نویسنده مطلب saber

دیدگاه شما

بدون دیدگاه