تقنية

CACHE في بايثون: لماذا يختلف العرض بحسب الإصدار؟

في 3.12.14 يعطي وجود CACHE افتراضيًا False ومع الخيار True
رصد محلي للمثال. [1] [2]

الإصدار جزء من النتيجة. [1] [2]

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

نتيجة المثال تخص 3.12.14. [1] [2]

  • نفحص وجود CACHE في التعليمات المعروضة. [1] [2]
  • الفحص الافتراضي يعطي False. [1] [2]
  • مع show_caches=True يعطي True. [1] [2]
  • CACHE مساحة تخزين داخل البايت كود. [1] [2]
  • من 3.13 لا يؤثر الخيار في get_instructions. [1]

المثال على 3.12.14

import dis as d
def f(x):
 return x+1
print(any(i.opname=='CACHE' for i in d.get_instructions(f)))
print(any(i.opname=='CACHE' for i in d.get_instructions(f,show_caches=True)))

[1] [2]

المخرجان False ثم True. [1] [2]

إخفاء ليس حذفًا

يخفي العرض القديم المداخل افتراضيًا ويكشفها بالخيار؛ إخفاؤها ليس حذفًا للمساحة. [1] [2]

من الإصدار 3.13 يوثق المصدر معلومات التخزين في cache_info دون مداخل منفصلة؛ لم نشغّل هذا الإصدار. [1]

توثيق 3.13 يذكر أن الخيار بلا أثر ولا مداخل CACHE منفصلة؛ ليس اختبارًا
وصف موثق لإصدار آخر. [1]

حدود النتيجة

تعليمات CPython تتغير. عدد المداخل المعروضة ليس قياسًا لسرعة التنفيذ؛ لم نقس التخصص. [1]

المراجع

  1. Python: dis — ملاحظات الإصدارات
  2. CPython 3.12.14: dis.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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