هل تستخدم وحدة Bython's Shelve IO التي تم تعيينها في الذاكرة؟

StackOverflow https://stackoverflow.com/questions/2618921

  •  26-09-2019
  •  | 
  •  

سؤال

هل يعرف أي شخص ما إذا كان بيثون shelve تستخدم الوحدة النمطية IO المخصصة للذاكرة؟

ربما يكون هذا السؤال مضللاً بعض الشيء. أنا أدرك ذلك shelve يستخدم وحدة نمطية على غرار DBM للقيام بعملها القذر. ما هي الفرص التي تستخدمها الوحدة الأساسية mmap?

إنني ننظم النماذج الأولية لخزن بيانات ، وبينما أدرك أن التحسين المبكرة أمر مستهجن عمومًا ، فإن هذا قد يساعدني حقًا في فهم المفاضلات التي تنطوي عليها التصميمي.

هل كانت مفيدة؟

المحلول

موجود dbm تستخدم التطبيقات في مكتبة Python القياسية جميعها "العادية" I/O ، وليس تعيين الذاكرة. ستحتاج إلى رمز خاص بك dbmتنفيذ ISH مع تعيين الذاكرة ، ودمجه مع shelve (مباشرة ، أو بشكل أكثر إنتاجية ، من خلال anydbm).

نصائح أخرى

لست متأكدًا مما تحاول تعلمه من خلال طرح هذا السؤال ، حيث يبدو أنك تعرف بالفعل الإجابة: يعتمد ذلك على متجر DBM الفعلي. بعضهم سيستخدم MMAP - أتوقع أن يستخدم كل شيء ما عدا DumbdBM MMAP - ولكن ماذا في ذلك؟ من شبه المؤكد أن النفقات العامة في الرفوف ليست في اختيار MMAP-assus-Fileio ، ولكن في عملية التخليل. لا يمكنك mmap ملف DBM بشكل معقول في كلتا الحالتين ، لأن وحدة DBM قد يكون لها قفل خيالي خاص بها (وقد لا يكون ملفًا واحدًا على أي حال ، مثل عندما يستخدم BSDDB.)

إذا كنت تبحث فقط عن مصدر إلهام لخزن البيانات الخاص بك ، فلا تنظر إلى الرفى ، لأن كل ما يفعله هو المخلل والمرور إلى مخزن بيانات آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top