هل تستخدم وحدة Bython's Shelve IO التي تم تعيينها في الذاكرة؟
سؤال
هل يعرف أي شخص ما إذا كان بيثون shelve
تستخدم الوحدة النمطية IO المخصصة للذاكرة؟
ربما يكون هذا السؤال مضللاً بعض الشيء. أنا أدرك ذلك shelve
يستخدم وحدة نمطية على غرار DBM للقيام بعملها القذر. ما هي الفرص التي تستخدمها الوحدة الأساسية mmap
?
إنني ننظم النماذج الأولية لخزن بيانات ، وبينما أدرك أن التحسين المبكرة أمر مستهجن عمومًا ، فإن هذا قد يساعدني حقًا في فهم المفاضلات التي تنطوي عليها التصميمي.
المحلول
موجود dbm
تستخدم التطبيقات في مكتبة Python القياسية جميعها "العادية" I/O ، وليس تعيين الذاكرة. ستحتاج إلى رمز خاص بك dbm
تنفيذ ISH مع تعيين الذاكرة ، ودمجه مع shelve
(مباشرة ، أو بشكل أكثر إنتاجية ، من خلال anydbm
).
نصائح أخرى
لست متأكدًا مما تحاول تعلمه من خلال طرح هذا السؤال ، حيث يبدو أنك تعرف بالفعل الإجابة: يعتمد ذلك على متجر DBM الفعلي. بعضهم سيستخدم MMAP - أتوقع أن يستخدم كل شيء ما عدا DumbdBM MMAP - ولكن ماذا في ذلك؟ من شبه المؤكد أن النفقات العامة في الرفوف ليست في اختيار MMAP-assus-Fileio ، ولكن في عملية التخليل. لا يمكنك mmap ملف DBM بشكل معقول في كلتا الحالتين ، لأن وحدة DBM قد يكون لها قفل خيالي خاص بها (وقد لا يكون ملفًا واحدًا على أي حال ، مثل عندما يستخدم BSDDB.)
إذا كنت تبحث فقط عن مصدر إلهام لخزن البيانات الخاص بك ، فلا تنظر إلى الرفى ، لأن كل ما يفعله هو المخلل والمرور إلى مخزن بيانات آخر.