2026-11-05 · المصدر:KDNuggets

خطوة اعتيادية لتحميل البيانات ضاعفت الذاكرة المقيمة نحو تسعة عشر مرة؛ ومحللات البث مثل ijson تعالج السجلات واحدة تلو الأخرى، فتبقي الأثر ثابتًا بغض النظر عن حجم الملف.
808 MB. هذا هو الأثر الذي بلغته عملية Python بعد استيعاب ملف JSON واحد وزنه 43 MB على القرص فقط — توسع بنحو تسعة عشر ضعفًا، والمشكلة في قلب استعراض هندسي حديث من KDNuggets.
القفزة ليست خطأ؛ إنها السلوك الافتراضي لتحليل الملف كاملًا. فعندما يحمّل Python مستند JSON بالطريقة التقليدية، يجسّد التسلسل الهرمي بأكمله دفعة واحدة — كل كائن ومصفوفة وسلسلة — ببنيات Python الأصلية قبل وقت طويل من بدء أي تحليل. ولأن كائنات Python تحمل عبئًا معتبرًا لكل عنصر، يمكن لمستند مدمج كنص أن يشغل ذاكرة حية أكثر بمقدار رتبة عشرية. ولأي فريق افترض أن حجم الملف وكيل موثوق لمتطلبات ذاكرة الوصول العشوائي، فإن المسافة بين 43 MB و808 MB تصحيح غير مريح.
وجواب الاستعراض هو ijson، محلل بثّي. فبدلًا من قراءة المستند كله في الذاكرة، يجتاز ijson الكتاب تدريجيًا، مقدِّمًا سجلًا واحدًا في كل مرة بحيث تعالج الشيفرة كل عنصر وتتخلص منه قبل وصول التالي. فبذلك يتتبع استهلاك الذاكرة حجم سجل واحد لا حجم الملف — وهو ما يقصده الكاتب بقوله إن البث «غيّر كل شيء».
والدرس يمتد إلى ما بعد صيغة ملف واحدة. فخطوط المعالجة التي تصطدم بسقوف ذاكرة الوصول العشوائي تفشل غالبًا لا لأن البيانات كبيرة حقًا، بل لأن استراتيجية التحميل تصرّ على تجسيد كلها في وقت واحد.
ولمخططي بنى الذكاء الاصطناعي التحتية، الحادثة نقطة بيانات هادئة لكنها عملية. فالهامش الذاكري على عقد التدريب والمعالجة المسبقة غالٍ، وخطوة تنفخ مدخلًا بحجم 43 MB إلى 808 MB من الذاكرة المقيمة تفرض أنظِعة أكبر مما يطلبه حمل العمل الفعلي فعلًا. ويُصنَّف الاستيعاب بالبث ضمن أرخص التحسينات المتاحة تحديدًا لأنه لا يتطلب عتادًا جديدًا — بل مسار تحليل مختلف فحسب.
الوسوم: ijson · Python · JSON Streaming · Memory Management · Data Engineering
萬安算交所 AIXX · AIXX · بورصة الحوسبة الموثقة · قاعة التداول