में आइटम हटाने के बाद मेमोरी पुनः प्राप्त करने के बाद मेरे पास पाइथन में अपेक्षाकृत बड़ा शब्दकोश है और मैं केवल इससे ही आइटम को हटाने में सक्षम होना चाहता हूं, लेकिन वास्तव में पुनः प्राप्त करने के लिए मेरे प्रोग्राम में इन विलोपनों से स्मृति को पुनः प्राप्त करना चाहते हैं। मैं एक समस्या से गुजर रहा हूं जिससे मैं शब्दकोश से वस्तुओं को हटा देता हूं और कचरा कलेक्टर मैन्युअल रूप से चलाता हूं, पाइथन स्मृति को मुक्त नहीं कर रहा है।पाइथन
इस का एक सरल उदाहरण:
>>> tupdict = {}
# consumes around 2 GB of memory
>>> for i in xrange(12500000):
... tupdict[i] = (i,i)
...
# delete over half the entries, no drop in consumed memory
>>> for i in xrange(7500000):
... del tupdict[i]
...
>>> import gc
# manually garbage collect, still no drop in consumed memory after this
>>> gc.collect()
0
>>>
मैं कल्पना क्या हो रहा है कि हालांकि प्रविष्टियों नष्ट हो जाती हैं और कचरा कलेक्टर रन अजगर आगे बढ़ो नहीं करता है और शब्दकोश का आकार बदलने के लिए है। मेरा सवाल यह है कि, क्या इसके आसपास कोई आसान तरीका है, या क्या मुझे अपने कार्यक्रम को लिखने के बारे में और अधिक गंभीर पुनर्विचार की आवश्यकता है?
आप मेमोरी खपत को कैसे माप रहे हैं? – stonemetal
कुछ भी फैंसी नहीं - उबंटू –
में सिस्टम मॉनीटर विंडोज एक्सपी एसपी 3 पर पायथन 2.6.5 पर 'gc.collect() 'चल रहा है, स्मृति के लगभग 50% को मुक्त करता है –