मैंने अनुभव किया है कि अन्य भाषाओं में। अब मुझे पाइथन में एक ही समस्या है। मेरे पास एक शब्दकोश है जिसमें बहुत सी सीआरयूडी क्रियाएं हैं। कोई यह मान लेगा कि एक शब्दकोश से तत्वों को हटाने से स्मृति स्मृति पदचिह्न कम हो जाना चाहिए। यह मामला नहीं है। एक बार जब शब्दकोश आकार में बढ़ता है (आमतौर पर दोगुना हो जाता है), यह कभी भी आवंटित स्मृति को रिलीज़ नहीं करता है। मैं इस प्रयोग को चलाने की है:पाइथन शब्दकोश को कम करने के लिए कैसे मजबूर करें?
import random
import sys
import uuid
a= {}
for i in range(0, 100000):
a[uuid.uuid4()] = uuid.uuid4()
if i % 1000 == 0:
print sys.getsizeof(a)
for i in range(0, 100000):
e = random.choice(a.keys())
del a[e]
if i % 1000 == 0:
print sys.getsizeof(a)
print len(a)
पहले पाश की अंतिम पंक्ति 6291736
है। दूसरी लूप की अंतिम पंक्ति 6291736
भी है। और शब्दकोश का आकार 0
है।
तो इस समस्या से निपटने के लिए कैसे? क्या स्मृति की रिहाई को मजबूर करने का कोई तरीका है?
पीएस: वास्तव में यादृच्छिक करने की ज़रूरत नहीं है - मैंने दूसरे लूप की सीमा के साथ खेला।
आप पुराने की सामग्री के साथ एक नया शब्दकोश बनाने का प्रयास कर सकते हैं, और पुराने के संदर्भ को हटा सकते हैं। – iobender
किस बिंदु पर? समय पर? मैं लिखने को कैसे रोकूं? – Schultz9999
पायथन की 'थ्रेडिंग', 'मल्टीप्रोसेसिंग', और 'एसिन्सीओ' मॉड्यूल * सभी * आपको 'लॉक' जैसे लगभग समान सिंक्रनाइज़ेशन प्राइमेटिव प्रदान करते हैं। मैं लागू मॉड्यूल के दस्तावेज में देखना शुरू कर दूंगा। – brenns10