التابع array.buffer_info()‎ في بايثون

من موسوعة حسوب


يعيد التابع صفًّا بهيئة يتضمّن الموقع الحالي في الذاكرة والطول بعدد العناصر في الذاكرة المؤقتة buffer والمستخدمة لاستيعاب محتويات المصفوفة.

البنية العامة

array.buffer_info()

القيمة المعادة

يعيد التابع صفًّا بهيئة (عنوان، طول) يتضمّن الموقع الحالي في الذاكرة والطول بعدد العناصر في الذاكرة المؤقتة والمستخدمة لاستيعاب محتويات المصفوفة. يمكن حساب حجم الذاكرة المؤقتة بالبايتات بواسطة التعبير array.buffer_info()[1] * array.itemsize، وهذا مفيد في بعض الأحيان وخصوصًا عند العمل مع واجهات إدخال وإخراج ذات مستوى واطئ (وغير آمنة بطبيعة الحال) والتي تحتاج إلى عناوين في الذاكرة، مثل بعض عمليات ioctl()‎. تكون الأرقام المعادة صالحة ما دامت المصفوفة موجودة وما لم يُجرَ عليها أيّ عملية تؤدي إلى تغيير طولها.

ملاحظة:

من الأجدر عند استخدام كائنات array من أكواد مكتوبة بلغة C أو ‎C++‎ (وهي الطريقة الوحيدة الفعالة للاستفادة من هذه المعلومة) استخدام واجهة الذاكرة المؤقتة والمدعومة من قبل كائنات array. ولكن يجب الاعتماد على هذه الطريقة لأغراض التوافق مع الإصدارات القديمة، ويجب تجنبها في الشيفرات الجديدة.

أمثلة

يبين المثال التالي آلية عمل التابع:

>>> import array
>>> a = array.array('l', [1, 2, 3, 4, 5])
>>> a.buffer_info()
(140050559910696, 5)

مصادر