مثال 51 پایتون – برنامه ای به پایتون بنویسید که profiling برنامه های پایتون را معین کند.
منظور از profile یک مجموعه از آمار است که نشان می دهند هر چند وقت یک بار و به چه مدت اجزاء مختلف برنامه اجرا شده اند. این آمارها می توانند از طریق ماژول pstats به صورت گزارش الگو بندی شوند.
کد برنامه
1 2 3 4 5 6 7 |
import cProfile def sum_of_10000000_first_numbers(): sum = 0 for i in range(1,10000001): sum += i print(sum) cProfile.run('sum_of_10000000_first_numbers()') |
خروجی برنامه
1 2 3 4 5 6 7 8 9 |
50000005000000 5 function calls in 0.453 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.453 0.453 <string>:1(<module>) 1 0.453 0.453 0.453 0.453 tu24_2.py:2(sum_of_10000000_first_numbers) 1 0.000 0.000 0.453 0.453 {built-in method builtins.exec} 1 0.000 0.000 0.000 0.000 {built-in method builtins.print} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} |
توضیح برنامه
کد پایتون ارائه شده یک تابع به نام sum_of_10000000_first_numbers
ایجاد میکند که مجموع اعداد از 1 تا 10،000،000 را محاسبه میکند و سپس این تابع را از طریق ماژول cProfile
اجرا میکند تا زمان اجرای هر تابع و تعداد فراخوانیها و هزینههای زمانی مربوط به هر تابع را بسنجد. در ادامه توضیحات مربوط به اجرای این کد آورده شده است:
import cProfile
: این دستور به وارد کردن ماژولcProfile
در برنامه کمک میکند. این ماژول به تجزیه و تحلیل زمان اجرای بخشهای مختلف برنامه کمک میکند.- تعریف تابع
sum_of_10000000_first_numbers
: این تابع یک متغیر به نامsum
ایجاد میکند و سپس با استفاده از یک حلقهfor
تمام اعداد از 1 تا 10،000،000 را با هم جمع میکند و نتیجه را درsum
ذخیره میکند. در نهایت نتیجه جمع گزارش میشود. cProfile.run('sum_of_10000000_first_numbers()')
: این دستور تابعsum_of_10000000_first_numbers
را اجرا میکند و اطلاعات زمان اجرا و سایر آمارهای مربوط به اجرا در یک گزارش استاندارد به وسیلهcProfile
ثبت میشود. این گزارش شامل زمان اجرای هر تابع، تعداد فراخوانیها و معلومات دقیقتری برای این تابع است.
اگر این کد را اجرا کنید، گزارش cProfile
شامل جزئیات زمان اجرا و تعداد فراخوانیها برای تابع sum_of_10000000_first_numbers
نمایش داده میشود. این اطلاعات کمک میکنند تا بخشهایی از برنامه که زمان بیشتری را مصرف میکنند را شناسایی و بخشهای پر مصرف و مورد نیاز را بهبود دهید.
مقداد علی بخشی هستم. موسیقی دان، برنامه نویس، متخصص هوش مصنوعی، علم داده، متخصص بلاکچین و توسعه دهنده ربات های هوشمند.
دانش آموخته مقطع ارشد و دکتری دانشکده فنی دانشگاه تهران هستم. با سابقه تدریس درس برنامه نویسی در دانشگاه (پردیس بین الملل کیش دانشگاه تهران)