यदि आप बहुत अधिक डेटा लिख रहे हैं और गति एक चिंता का विषय है, जिसे आपको शायद जाना चाहिए 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अधिक कुशल होगा थोड़ा दुर्लभ हैं।