पर पायथन स्ट्रिंग मेमोरी उपयोग मैं फ्रीब्स पर पाइथन स्ट्रिंग के साथ एक अजीब स्मृति उपयोग पैटर्न देख रहा हूं। निम्नलिखित सत्र पर पर विचार करें। आइडिया एक ऐसी सूची बनाना है जिसमें तार हैं ताकि सूची में संचयी वर्ण 100 एमबी हो।फ्रीबीएसडी
l = []
for i in xrange(100000):
l.append(str(i) * (1000/len(str(i))))
यह उम्मीद के अनुसार लगभग 100 एमबी मेमोरी का उपयोग करता है और 'डेल एल' इसे साफ़ कर देगा।
l = []
for i in xrange(20000):
l.append(str(i) * (5000/len(str(i))))
यह 165 एमबी मेमोरी का उपयोग कर रहा है। मुझे वास्तव में समझ में नहीं आता कि अतिरिक्त मेमोरी उपयोग कहां से आ रहा है। [दोनों सूचियों का आकार समान है]
फ्रीबीएसडी 7.2 पर पायथन 2.6.4। लिनक्स/विंडोज़ पर केवल 100 एमबी मेमोरी का उपयोग करता है।
अद्यतन: मैं 'ps aux' का उपयोग कर स्मृति को माप रहा हूं। उपरोक्त कोड स्निपेट के बाद os.sytem का उपयोग करके निष्पादित किया जा सकता है। इसके अलावा इन्हें अलग से निष्पादित किया गया था।
अद्यतन 2: 2 के गुणकों में freebsd mallocs स्मृति की तरह दिखता है तो 5KB आवंटित करने से वास्तव में 8KB आवंटित होता है। मुझे यकीन नहीं है हालांकि।
क्या पहले कोड के दूसरे टुकड़े को क्रियान्वित तो पहले एक को क्रियान्वित करने के बारे में? मुझे लगता है कि यह 165 एमबी होगा क्योंकि यह ऑपरेटिंग सिस्टम/पायथन दुभाषिया और कचरा कलेक्टर स्मृति का प्रबंधन कैसे करता है। – Hossein
आप इसका उपयोग करने वाली मेमोरी को कैसे निर्धारित करते हैं? क्या आप वाकई सही हैं? – steabert