تقنية

max_size في بايثون: هل الصفر يعني النقل فورًا؟

كتابة سبعة بايتات لا تنقل مع max_size صفر وتنقل مع ثلاثة
كتابة فقط في 3.12.14. [1] [2]

في SpooledTemporaryFile، الصفر لا يعني حدًا صفريًا. [1] [2]

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

لا؛ max_size=0 لا ينقل تلقائيًا بسبب الكتابة. [1] [2]

  • كتبنا budleaf: سبعة بايتات. [1] [2]
  • مع الصفر: _rolled=False؛ مع 3: True. [1] [2]
  • الشرط if max_size يتخطى الصفر. [1] [2]
  • عمليات أخرى، ومنها fileno وtruncate(7)، قد تنقل. [1] [2]
  • _rolled مؤشر خاص؛ اختبارنا 3.12.14. [1] [2]

المثال

import tempfile as t
for limit in (0,3):
 with t.SpooledTemporaryFile(
  max_size=limit,dir=".") as f:
  f.write(b"budleaf")
  print(limit,f._rolled)

[1] [2]

تعطيل الشرط

المصدر لا يفحص تجاوز الحجم إذا كان الحد صفرًا. شغّلنا المثال بمجلد مؤقت قابل للكتابة؛ dir="." يشير للمجلد الحالي. المخرجان 0 False و3 True. [1] [2]

truncate سبعة ينقل رغم الصفر والمؤشر الخاص محدد بالإصدار
سبب آخر. [1] [2]

ليس ضمانًا للذاكرة

هذا تعطيل لنقل الكتابة الآلي. في ضبطنا truncate(7) نقل الملف رغم الصفر، وحفظ البايتات. with يغلقه. لا نعد بحد ذاكرة أو أداء معين. [1] [2]

المراجع

  1. Python 3.12: spooled temporary files
  2. CPython 3.12.14: size and rollover checks
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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