यदि आप बहुत अधिक डेटा लिख रहे हैं और गति एक चिंता का विषय है, जिसे आपको शायद जाना चाहिए f.write(...)
। मैंने त्वरित गति की तुलना की और print(..., file=f)
बड़ी संख्या में लेखन कार्य करने की तुलना में यह काफी तेज था ।
import time
start = start = time.time()
with open("test.txt", 'w') as f:
for i in range(10000000):
# print('This is a speed test', file=f)
# f.write('This is a speed test\n')
end = time.time()
print(end - start)
write
मेरी मशीन पर औसतन 2.45 में समाप्त हुआ, जबकि print
लंबे (9.76) के रूप में लगभग 4 बार लिया गया। यह कहा जा रहा है, ज्यादातर वास्तविक दुनिया के परिदृश्यों में यह एक मुद्दा नहीं होगा।
यदि आप अपने साथ जाना चुनते हैं, print(..., file=f)
तो आप पाएंगे कि आप समय-समय पर नईलाइन को दबाना चाहते हैं, या इसे किसी और चीज़ से बदल सकते हैं। यह वैकल्पिक end
पैरामीटर सेट करके किया जा सकता है , उदाहरण के लिए;
with open("test", 'w') as f:
print('Foo1,', file=f, end='')
print('Foo2,', file=f, end='')
print('Foo3', file=f)
जो भी आप चुनते हैं, मैं with
इसका उपयोग करने का सुझाव दूंगा क्योंकि यह कोड को पढ़ने में बहुत आसान बनाता है।
अद्यतन : प्रदर्शन में इस अंतर को इस तथ्य से समझाया जाता है कि write
अत्यधिक बफर होता है और डिस्क पर वास्तव में होने वाले किसी भी लिखने से पहले रिटर्न होता है ( यह उत्तर देखें ), जबकि print
(शायद) लाइन बफरिंग का उपयोग करता है। इसके लिए एक सरल परीक्षण लंबे लेखन के लिए प्रदर्शन की जांच करना होगा, जहां लाइन बफ़रिंग के लिए नुकसान (गति के मामले में) कम स्पष्ट होंगे।
start = start = time.time()
long_line = 'This is a speed test' * 100
with open("test.txt", 'w') as f:
for i in range(1000000):
# print(long_line, file=f)
# f.write(long_line + '\n')
end = time.time()
print(end - start, "s")
प्रदर्शन अंतर अब बहुत कम हो जाता है, औसतन 2.20 के लिए समय write
और 3.10 के लिए print
। यदि आप इस loooong लाइन प्रदर्शन को प्राप्त करने के लिए तार का एक गुच्छा संक्षिप्त करने की जरूरत है, तो उपयोग-मामलों जहां print
अधिक कुशल होगा थोड़ा दुर्लभ हैं।