फाइल मैं एक बहुत साधारण स्क्रिप्ट अभी कि enumerate()
का उपयोग कर एक पाठ फ़ाइल में लाइनों में गिना जाता है:(अजगर) एक बहुत बड़ा (> 10GB) में लाइनों की गिनती जितनी जल्दी संभव
i = 0
f = open("C:/Users/guest/Desktop/file.log", "r")
for i, line in enumerate(f):
pass
print i + 1
f.close()
यह लगभग 3 लेता है और ~ 30 मिलियन लाइनों के साथ 15 जीबी लॉग फ़ाइल के माध्यम से जाने के लिए आधा मिनट। यह बहुत अच्छा होगा अगर मैं इसे दो मिनट या उससे कम के नीचे प्राप्त कर सकूं, क्योंकि ये दैनिक लॉग हैं और हम मासिक विश्लेषण करना चाहते हैं, इसलिए कोड को ~ 15 जीबी के 30 लॉग संसाधित करना होगा - संभवत: डेढ़ घंटे से अधिक , और हम सर्वर पर & मेमोरी लोड को कम करना चाहते हैं।
मैं भी एक अच्छा सन्निकटन/आकलन विधि के लिए समझौता होगा, लेकिन यह लगभग 4 sig अंजीर सही होने की जरूरत है ...
धन्यवाद!
आम तौर पर फ़ाइल को बाइनरी डेटा के रूप में समझने के लिए तेज़ होगा, इसे उचित रूप से आकार वाले हिस्सों में कहें (कहें, एक समय में 4 केबी), और प्रत्येक चंक में \ n' अक्षरों को गिनें। – aroth
यह आपके निष्पक्ष समाधान से बेहतर प्रदर्शन नहीं कर रहा है, लेकिन आपके पास जो कुछ है, उसे लिखने के लिए पाइथोनिक तरीका केवल 'खुले (fname) के साथ होगा: प्रिंट राशि (एफ में लाइन के लिए 1) ' – wim
अरोथ: धन्यवाद टिप, मुझे उसमें देखना चाहिए। विम: बढ़िया, धन्यवाद, यह बहुत छोटा है ... – Adrienne