मैं वर्तमान में पाइथन 2.7 में .csv फाइलों के डेटा को पढ़ने की कोशिश कर रहा हूं जिसमें अधिकतम 1 मिलियन पंक्तियां हैं, और 200 कॉलम (फाइलें 100 एमबी से 1.6 जीबी तक हैं)। मैं फाइलों के लिए यह (बहुत धीरे-धीरे) कर सकता हूं 300,000 पंक्तियों के तहत, लेकिन एक बार जब मैं ऊपर जाता हूं तो मुझे स्मृति त्रुटियां मिलती हैं। मेरा कोड इस तरह दिखता है:
def getdata (फ़ाइल नाम, मानदंड): डेटा = [] मानदंड में मानदंड के लिए: डेटा। एपेंड (गेटस्टफ (फाइलनाम, मानदंड)) रिटर्न डेटा डेफ गेटस्टफ (फाइलनाम, मानदंड): आयात सीएसवी डेटा = [] ओपन (फाइलनाम, "आरबी") के साथ सीएसवीफाइल के रूप में: डेटारीडर = सीएसवी। रीडर (सीएसवीफाइल) डेटारीडर में पंक्ति के लिए: अगर पंक्ति[3]=="कॉलम हेडर": data.append(row) elif len(data)<2 and row[3]!=criterion: पास elif row[3]==criterion: data.append(row) ) और: डेटा लौटाएं
गेटस्टफ फंक्शन में अन्य क्लॉज का कारण यह है कि मानदंड में फिट होने वाले सभी तत्वों को सीएसवी फ़ाइल में एक साथ सूचीबद्ध किया जाएगा, इसलिए जब मैं लूप छोड़ देता हूं मैं समय बचाने के लिए उनसे आगे निकल जाता हूं।
मेरे प्रश्न हैं:
मैं इसे कैसे प्राप्त कर सकता हूं? यह बड़ी फ़ाइलों के साथ काम करने के लिए है?
क्या कोई तरीका है जिससे मैं इसे और तेज़ कर सकता हूँ?
मेरे कंप्यूटर में है 8 जीबी रैम, 64 बिट विंडोज 7 पर चल रहा है, और प्रोसेसर 3.40 गीगाहर्ट्ज़ है (निश्चित नहीं कि आपको कौन सी जानकारी चाहिए)।