मेरे पास स्मृति में एक खंडित संरचना है और मैं इसे एक समान दिखने वाली स्मृतिदृश्य के रूप में एक्सेस करना चाहता हूं। क्या ऐसा करने का कोई आसान तरीका है या क्या मुझे अपना समाधान लागू करना चाहिए?गैर-संगत स्मृति स्थान के लिए मेमोरीव्यू कैसे बनाएं?
उदाहरण के लिए, एक फ़ाइल स्वरूप पर विचार करें जिसमें रिकॉर्ड्स शामिल हैं। प्रत्येक रिकॉर्ड में एक निश्चित लंबाई हैडर होता है, जो रिकॉर्ड की सामग्री की लंबाई निर्दिष्ट करता है। एक उच्च स्तर की तार्किक संरचना कई रिकॉर्डों में फैल सकती है। यह उच्च स्तरीय संरचना को कार्यान्वित करने में आसान होगा अगर यह बाइट्स की एक साधारण संगत सरणी के रूप में स्वयं का खंडित स्मृति स्थान देख सके।
अद्यतन:
ऐसा लगता है अजगर इस 'खंडित किया' बफर आंतरिक रूप से लिखते हैं, तो कम से कम this part of the documentation के आधार पर समर्थन करता है। लेकिन यह केवल सी एपीआई है।
Update2:
जहां तक मैं देख रहा हूँ, संदर्भित सी एपीआई - कहा जाता है पुरानी शैली बफ़र्स - मैं क्या जरूरत है, लेकिन यह अब पदावनत और अजगर के नए संस्करण में उपलब्ध नहीं है (3.X) । नया बफर प्रोटोकॉल - PEP 3118 में निर्दिष्ट - बफर का प्रतिनिधित्व करने का एक नया तरीका प्रदान करता है। यह एपीआई अधिकांश उपयोग मामलों में अधिक उपयोग योग्य है (उनमें से, उन मामलों का उपयोग करें जहां प्रतिनिधित्व बफर स्मृति में संगत नहीं है), लेकिन इस विशिष्ट एक का समर्थन नहीं करता है, जहां एक आयामी सरणी पूरी तरह से स्वतंत्र रूप से रखी जा सकती है (कई अलग-अलग आकार में) आकार में।
सबसे पहले, फ़ाइल शायद ही कभी स्मृति संरचना है। दूसरा, निम्न स्तर की मेमोरी संरचनाओं तक पहुंचने के लिए आपको और किस तरह से आवश्यकता है, और यहां तक कि इसे अजगर के साथ भी करना है? प्रश्न सी या सी ++, या देव-नियंत्रित स्मृति आवंटन और पहुंच के साथ अन्य भाषाओं के लिए उदाहरण के लिए अधिक उपयुक्त लगता है। – alko
एक लिंक्ड सूची को पार करें और प्रत्येक डेटा प्रिंट करें? – perreal
यदि आप इसे mmap (पाइथन में भी उपलब्ध) के साथ मैप करते हैं तो एक फ़ाइल मेमोरी स्ट्रक्चर बन जाती है। हां एक लिंक की गई सूची को पार करना संभव है लेकिन बिंदु यह है कि मैं इसे स्मृति इंटरफ़ेस जैसे इंटरफ़ेस के साथ एक्सेस करना चाहता हूं। मुझे लगता है कि यह संभव है क्योंकि दस्तावेज़ीकरण का उल्लेख है कि आप इसे गैर-संगत डेटा (उदा। NumPy arrays) तक पहुंचने के लिए उपयोग कर सकते हैं। – molnarg