Python में File Buffering को समझना
यदि आप open Function की Definition देखें - open(name[, mode[, buffering]]), तो आप देखेंगे कि यह Python 2 में 3 Arguments लेता है, तीसरा Argument buffering होता है। वैकल्पिक buffering Argument File के Desired Buffer Size को Specify करता है:
- 0 का अर्थ है Unbuffered
- 1 का अर्थ है Line Buffered
- कोई अन्य Positive Value का अर्थ है उस Size (Bytes में) का लगभग Buffer उपयोग करना
- Negative Buffering का अर्थ है System Default का उपयोग करना, जो आमतौर पर TTY Devices के लिए Line Buffered और अन्य Files के लिए Fully Buffered होता है
- यदि Omit किया जाता है, तो System Default उपयोग किया जाता है
उदाहरण: 128 Bytes Buffer Size के साथ File Open करना
>>> open('my_file', 'r+', 128)
Python 3 में Buffering
Python 3 में open की Function Definition है: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)। buffering एक वैकल्पिक Integer है जिसका उपयोग Buffering Policy को Set करने के लिए किया जाता है:
- 0 पास करें Buffering को बंद करने के लिए (केवल Binary Mode में अनुमत)
- 1 पास करें Line Buffering Select करने के लिए (केवल Text Mode में उपयोग योग्य)
- > 1 Integer पास करें Fixed-Size Chunk Buffer के Size को Bytes में Indicate करने के लिए
जब कोई Buffering Argument नहीं दिया जाता है, तो Default Buffering Policy इस प्रकार काम करती है:
- Binary Files को Fixed-Size Chunks में Buffered किया जाता है; Buffer का Size Underlying Device के "Block Size" को Determine करने की कोशिश करने वाले Heuristic का उपयोग करके चुना जाता है और
io.DEFAULT_BUFFER_SIZEपर Fall Back करता है। - "Interactive" Text Files (जिन Files के लिए
isatty()True Return करता है) Line Buffering का उपयोग करती हैं। अन्य Text Files Binary Files के लिए ऊपर वर्णित Policy का उपयोग करती हैं।
Python 3 के लिए उदाहरण
>>> open('my_file', 'r+', 128)