Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में मेमोरी-मैप्ड फ़ाइल सपोर्ट (mmap)


जब आप किसी फ़ाइल ऑब्जेक्ट को पायथन प्रोग्राम में पढ़ते हैं और इसे संशोधित करना चाहते हैं, तो यह दो तरीकों से किया जा सकता है। पहला तरीका है उस भौतिक स्टोरेज ड्राइव पर सामग्री को संशोधित करना जहां फ़ाइल स्थित है और दूसरा तरीका है सिस्टम की मेमोरी या रैम में सीधे इसे संशोधित करना। इस लेख में हम देखेंगे कि mmap मॉड्यूल का उपयोग करके फ़ाइल ऑब्जेक्ट की सामग्री को कैसे पढ़ें, खोजें और संशोधित करें। सिस्टम कॉल जैसे open, read और lseek के बजाय, मेमोरी-मैपिंग फ़ाइल के डेटा को मेमोरी में रखता है जो आपको मेमोरी में सीधे फ़ाइलों को हेरफेर करने की अनुमति देता है।

मेमोरी मैप्ड फ़ाइल पढ़ें

नीचे दिए गए उदाहरण में हम एक पूरी फ़ाइल को एक बार में मेमोरी में पढ़ते हैं और इसे मेमोरी में फ़ाइल ऑब्जेक्ट के रूप में रखते हैं। फिर हम इसे रीड मोड में एक्सेस करते हैं। अंत में जैसा कि आप देख सकते हैं पूरी फ़ाइल एक ऑब्जेक्ट को दर्शाती है जिससे हम आवश्यक टेक्स्ट प्राप्त करने के लिए कुछ स्थितियों को स्लाइस करते हैं।

उदाहरण

import mmap

def read_mmap(fname):
    with open(fname, mode="r", encoding="utf8") as fobj:
        with mmap.mmap(fobj.fileno(), length=0, access=mmap.ACCESS_READ) as mmap_obj:
            print(mmap_obj[4:26])

read_mmap('E:\\test.txt')

आउटपुट

'emissions from gaseous'

mmap का उपयोग करके खोजें

उदाहरण

import mmap
import time

def regular_io_find(fname):
    with open(fname, mode="r", encoding="utf-8") as fobj:
        text = fobj.read()
        text.find("Death ")

def mmap_io_find(fname):
    with open(fname, mode="r", encoding="utf-8") as fobj:
        with mmap.mmap(fobj.fileno(), length=0, access=mmap.ACCESS_READ) as mmap_obj:
            mmap_obj.find(b"Death ")

start_time_r = time.time()
regular_io_find('E:\\emissions.txt')
end_time_r = time.time()
print("Regular read start time :", start_time_r)
print("Regular read end time :", end_time_r)
print('Regular read time : {0}'.format(end_time_r - start_time_r))

start_time_m = time.time()
mmap_io_find('E:\\emissions.txt')
end_time_m = time.time()
print("mmap read start time :", start_time_m)
print("mmap read end time :", end_time_m)
print('mmap read time : {0}'.format(end_time_m - start_time_m))

आउटपुट

Regular read start time : 1609812463.2718163
Regular read end time : 1609812463.2783241
Regular read time to find: 0.00650787353515625
mmap read start time : 1609812463.2783241
mmap read end time : 1609812463.2783241
mmap read time to find : 0.0

फ़ाइल में लिखना

नीचे दिए गए उदाहरण में हम एक फ़ाइल लेते हैं और इसे mmap मॉड्यूल के साथ access कोड r+ के साथ खोलते हैं जो फ़ाइल को पढ़ने और लिखने दोनों की अनुमति देता है। फ़ाइल ऑब्जेक्ट बनाने के बाद हम स्लाइसिंग द्वारा एक स्थिति चुनते हैं जहां हम एक स्ट्रिंग लिख सकते हैं।

उदाहरण

import mmap

def mmap_io_write(fname):
    with open(fname, mode="r+") as fobj:
        with mmap.mmap(fobj.fileno(), length=0, access=mmap.ACCESS_WRITE) as mmap_obj:
            mmap_obj[20:26] = b"Hello!"
            mmap_obj.flush()

mmap_io_write('E:\\emissions.txt')

उपरोक्त कोड चलाने पर हम फ़ाइल खोलकर बाइट स्थिति 20 से 26 पर लिखी गई स्ट्रिंग Hello! देख सकते हैं।

  1. Python में वेक्टोराइज़ेशन Python में वेक्टोराइज़ेशन

    इस लेख में, हम वेक्टोराइज़ेशन और Python 3.x या उससे पहले के संस्करणों में कार्यान्वयन में शामिल विभिन्न तकनीकों के बारे में सीखेंगे।वेक्टोराइज़ेशन क्या है?वेक्टोराइज़ेशन लूप के उपयोग के बिना सरणियों को लागू करने की एक तकनीक है। एक फ़ंक्शन का उपयोग करने से कोड के रनिंग टाइम और एक्ज़ीक्यूशन टाइम को कु

  1. पायथन में फाइल ऑब्जेक्ट्स: पूरी गाइड पायथन में फाइल ऑब्जेक्ट्स: पूरी गाइड

    पायथन में, जब भी हम फाइल्स पढ़ने या लिखने का प्रयास करते हैं, हमें कोई लाइब्रेरी इम्पोर्ट करने की आवश्यकता नहीं होती क्योंकि यह नेटिवली हैंडल किया जाता है। सबसे पहली चीज जो हम करेंगे वह है बिल्ट-इन open फंक्शन का उपयोग करके एक फाइल ऑब्जेक्ट प्राप्त करना। open फंक्शन एक फाइल खोलता है और एक फाइल ऑब्ज

  1. पायथन openpyxl मॉड्यूल का उपयोग करके एक्सेल फ़ाइल पढ़ना और लिखना पायथन openpyxl मॉड्यूल का उपयोग करके एक्सेल फ़ाइल पढ़ना और लिखना

    पायथन एक्सेल फ़ाइलों के संचालन के लिए openpyxl मॉड्यूल प्रदान करता है। एक्सेल फ़ाइलें कैसे बनाएं, कैसे लिखें, पढ़ें आदि को इस मॉड्यूल द्वारा लागू किया जा सकता है। openpyxl मॉड्यूल स्थापित करने के लिए, हम कमांड प्रॉम्प्ट में यह कमांड लिख सकते हैं pip install openpyxl यदि हम शीट शीर्षक नाम देना चाहते