تقنية

pstats في بايثون: هل add يعيد تنفيذ الدالة؟

واحد وواحد في السجل
تجميع مؤلف. [1] [2] [3]

نضيف سجل القياس نفسه ونراقب أثر التنفيذ. [1] [2] [3]

الخلاصة السريعة

add يجمع البيانات؛ لم يعِد تنفيذ f هنا. [1] [2] [3]

  • runcall(f) ينفذ الدالة مرة، فتضيف عنصرًا. [1] [2] [3]
  • الزوج غير العودي والكلي ينتقل من (1, 1) إلى (2, 2). [1] [2] [3]
  • أضفنا p نفسه؛ الرقم المضاعف ليس قياس تشغيل جديد. [1] [2] [3]
  • len(hits) يبقى 1 بعد الإضافة. [1] [2] [3]
  • نفحص سجل f الداخلي في 3.12.14، دون ملفات أو مقارنة سرعة. [1] [2] [3]

المثال

import cProfile,pstats
hits=[]
def f(): hits.append(1)
p=cProfile.Profile()
p.runcall(f)
s=pstats.Stats(p)
k=(f.__code__.co_filename,f.__code__.co_firstlineno,"f")
print(s.stats[k][:2])
s.add(p)
print(s.stats[k][:2])
print(len(hits))

[1] [2] [3]

السجل والدالة

نختار سجل الدالة بالملف والسطر والاسم، لا مجموع سجلات المفسر. تجمع add حقول المدخل المطابق؛ لا تستبدله. المعروض (1, 1) ثم (2, 2) ثم 1. تكرار بيانات التشغيل يكرر وزنها في التجميع. [1] [2] [3]

السجل اثنان والتنفيذ واحد
عداد الدالة مستقل. [1] [2] [3]

الحدود

خريطة stats تفاصيل تنفيذ نفحصها للإيضاح. لا نقرأ ملفًا أو نعد العودية هنا، ولا نستنتج أن الزمن تحسن أو أن تشغيلين مستقلين حدثا. [1] [2] [3]

المراجع

  1. CPython3.12.14: pstats.py
  2. Python3.12: Stats/Profilers
  3. CPython3.12.14: cProfile.py
  4. موضوع تك: لغة بايثون — مفردات
  5. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.