के साथ" ओपन() "बनाम" का उपयोग करके पढ़ी गई है, मुझे पता है कि पाइथन में फ़ाइलों को पढ़ने के बारे में बहुत सारे लेख और प्रश्नों का उत्तर दिया गया है। लेकिन फिर भी मैं सोच रहा हूं कि पाइथन को एक ही कार्य करने के कई तरीके हैं। बस मैं क्या जानना चाहता हूं, इन दो तरीकों का उपयोग करने का प्रदर्शन प्रभाव क्या है?फ़ाइल खुली() "
उत्तर
का उपयोग with
बयान प्रदर्शन लाभ के लिए नहीं है, मुझे नहीं लगता कि किसी भी प्रदर्शन लाभ या with
कथन का उपयोग करें, जब तक, आप एक ही सफाई गतिविधि कि with
कथन का उपयोग स्वचालित रूप से प्रदर्शन करेंगे प्रदर्शन के साथ जुड़े नुकसान देखते हैं है।
आप open
समारोह के साथ with
बयान का उपयोग करते हैं, तो आप अंत में फ़ाइल को बंद करने के लिए, क्योंकि with
अपने आप आपके लिए इसे बंद होगा की जरूरत नहीं है।
इसके अलावा, with
कथन केवल खुली फ़ाइलों के लिए नहीं है, जिसका उपयोग संदर्भ प्रबंधकों के साथ संयोजन में किया जाता है। असल में, यदि आपके पास कोई ऑब्जेक्ट है जिसे आप सुनिश्चित करना चाहते हैं कि इसे एक बार किया जाता है या किसी प्रकार की त्रुटियां होती हैं, तो आप इसे context manager और with
कथन के रूप में परिभाषित कर सकते हैं, इसके __enter__()
और __exit__()
प्रविष्टियों पर प्रवेश करने के तरीके को कॉल किया जाएगा और ब्लॉक के साथ बाहर निकलें। PEP 0343 के अनुसार -
यह पीईपी यह कोशिश/अंत में बयान के मानक का उपयोग करता है बाहर कारक संभव बनाने के लिए एक नया बयान "
with
" अजगर भाषा में जोड़ता है।इस पीईपी में, संदर्भ प्रबंधक
__enter__()
और__exit__()
विधियों को प्रदान करते हैं जिन्हें कथन के शरीर से प्रवेश करने और निकालने के लिए बुलाया जाता है।
इसके अलावा, with
का उपयोग करने और नहीं इसे प्रयोग के प्रदर्शन परीक्षण -
In [14]: def foo():
....: f = open('a.txt','r')
....: for l in f:
....: pass
....: f.close()
....:
In [15]: def foo1():
....: with open('a.txt','r') as f:
....: for l in f:
....: pass
....:
In [17]: %timeit foo()
The slowest run took 41.91 times longer than the fastest. This could mean that an intermediate result is being cached
10000 loops, best of 3: 186 µs per loop
In [18]: %timeit foo1()
The slowest run took 206.14 times longer than the fastest. This could mean that an intermediate result is being cached
10000 loops, best of 3: 179 µs per loop
In [19]: %timeit foo()
The slowest run took 202.51 times longer than the fastest. This could mean that an intermediate result is being cached
10000 loops, best of 3: 180 µs per loop
In [20]: %timeit foo1()
10000 loops, best of 3: 193 µs per loop
In [21]: %timeit foo1()
10000 loops, best of 3: 194 µs per loop
- 1. सी # खुली फ़ाइल,% userprofile%
- 2. सिग्विन धीमी फ़ाइल खुली
- 3. इंटरसेप्ट विंडोज़ खुली फ़ाइल
- 4. Symfony2 खुली पीडीएफ फ़ाइल
- 5. सी सभी खुली फ़ाइल डिस्क्रिप्टर
- 6. पायथन खुली कच्ची ऑडियो डेटा फ़ाइल
- 7. बहुत अधिक खुली फ़ाइल त्रुटि, java.io.FileNotFoundException
- 8. एक विशिष्ट वर्कशीट पर खुली एक्सेल फ़ाइल
- 9. लेमन शर्तों में खुली फ़ाइल स्पष्टीकरण
- 10. जांचें कि कोई फ़ाइल खुली है
- 11. लेखन के लिए QFile खुली फ़ाइल
- 12. एक खुली फ़ाइल वस्तु का आकार
- 13. एक खुली फ़ाइल को दोबारा पढ़ें पायथन
- 14. एक यूनिकोड फ़ाइल नाम के साथ खुली फ़ाइल?
- 15. सभी खुली फ़ाइलों
- 16. टीएफएस 2010: खुली
- 17. NgbModal खुली विधि
- 18. जावा बहुत खुली फ़ाइलें
- 19. <a> टैग पर खुली फ़ाइल संवाद बॉक्स
- 20. रूबी फ़ाइल हैंडल प्रबंधन (बहुत अधिक खुली फ़ाइलों)
- 21. iCloud सक्षम - एप्लिकेशन लॉन्च पर प्रदर्शित खुली फ़ाइल को रोकें?
- 22. इनलाइन "खुली और लिखने वाली फ़ाइल" में नज़दीकी() अंतर्निहित है?
- 23. एक खुली फ़ाइल का नाम कैसे प्राप्त करें?
- 24. मैं वीबी 6 में एक खुली फ़ाइल कैसे कॉपी करूं?
- 25. रूबी - खुली फ़ाइल, एकाधिक लाइनों को ढूंढें और बदलें
- 26. मैं खुली फ़ाइल पर दो बार क्यों पढ़ नहीं सकता?
- 27. ग्रहण: क्या एक ही फ़ाइल दो संपादकों में खुली है?
- 28. बिना छेड़छाड़ के यादृच्छिक लेखन के लिए खुली फ़ाइल?
- 29. मैं Emacs में एक खुली फ़ाइल का नाम कैसे बदलूं?
- 30. नई gvim बफर में nautilus खुली फ़ाइल है?
यह सवाल पहले से ही ऐसा – The6thSense
प्रसंग प्रबंधकों में कहा गया है बहुत बाद में शुद्ध 'खुला()' विधि की तुलना में पेश किया गया था। आप 'timeit.timeit()' विधि के साथ प्रदर्शन को माप सकते हैं। 'संदर्भ प्रबंधक के साथ' किसी भी विफलता पर संसाधनों को बस जारी करता है, इसलिए आपको स्पष्ट 'अंत' खंड लिखना नहीं है। –