ফাইল কন্টেন্ট মেমরিতে ম্যাপ করে ডায়রেক্টলি ম্যানিপুলেট করার জন্য পাইথনের mmap মডিউল ব্যবহার করা হয়। এটি সিস্টেম কল (open, read, lseek) ছাড়া ফাইল অ্যাক্সেস দিয়ে পারফরম্যান্স বাড়ায়।
১. মেমরি-ম্যাপড ফাইল পড়া
mmap.mmap(fobj.fileno(), length=0, access=mmap.ACCESS_READ) দিয়ে ফাইল অবজেক্ট তৈরি করুন এবং স্লাইসিং দিয়ে ডেটা পড়ুন।
উদাহরণ
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')
# Output: 'emissions from gaseous'
২. mmap দিয়ে খোঁজা (Find)
রেগুলার I/O এবং mmap-এর খোঁজার গতি তুলনা করা হয়েছে। mmap অনেক দ্রুত।
উদাহরণ
import mmap, 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 ")
# টাইমিং কোড উপেক্ষা করা হয়েছে
৩. মেমরি-ম্যাপড ফাইলে লিখা
access=mmap.ACCESS_WRITE দিয়ে ফাইল খুলে স্লাইসিং অ্যাসাইনমেন্ট দিয়ে লিখুন।
উদাহরণ
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')