मैं 16 जीबी राम और 64 बिट ओएस के साथ एक लिनक्स मशीन पर पायथन 2.7 चलाता हूं। मैंने लिखा एक पायथन लिपि मेमोरी में बहुत अधिक डेटा लोड कर सकती है, जो मशीन को उस बिंदु तक धीमा कर देती है जहां मैं प्रक्रिया को और भी मार नहीं सकता।स्मृति उपयोग सीमित करें?
मैं फोन करके स्मृति को सीमित कर सकते हैं: स्क्रिप्ट चलाने से पहले
ulimit -v 12000000
मेरी खोल में
, मैं स्क्रिप्ट अपने आप में एक सीमित विकल्प शामिल करना चाहते हैं। जहां भी मैंने देखा, resource
मॉड्यूल को ulimit
के समान शक्ति के रूप में उद्धृत किया गया है। लेकिन कॉलिंग:
import resource
_, hard = resource.getrlimit(resource.RLIMIT_DATA)
resource.setrlimit(resource.RLIMIT_DATA, (12000, hard))
मेरी लिपि की शुरुआत में बिल्कुल कुछ भी नहीं है। यहां तक कि 12000 के रूप में कम मान को सेट करने से प्रक्रिया को कभी भी क्रैश नहीं हुआ। मैंने उसी परिणाम के साथ RLIMIT_STACK
के साथ भी कोशिश की। उत्सुकता से, कॉलिंग:
import subprocess
subprocess.call('ulimit -v 12000', shell=True)
कुछ भी नहीं करता है।
मैं क्या गलत कर रहा हूं? मुझे ऑनलाइन कोई वास्तविक उपयोग उदाहरण नहीं मिल सका।
क्या प्रोग्राम को और अधिक मेमोरी-कुशल बनाने के लिए कोई जगह है? – TigerhawkT3
वहाँ है, लेकिन इसमें कुछ समय लगेगा। फिलहाल, मुझे इसका परीक्षण करने और यह सुनिश्चित करने की ज़रूरत है कि यह कंप्यूटर को बंद नहीं करता है। और स्मृति के लिए एक असफल-सुरक्षित होने के बाद भी उपयोगी होगा। – Arne
चूंकि यह पायथन 2.7 में है, पाइथन 3 पर स्विच करने और आपके प्रोग्राम पर 2-से-3 कनवर्टर का उपयोग करने के बारे में कैसे? पायथन 3 में पाइथन 2 पर कई प्रदर्शन सुधार हैं, जिनमें से कुछ स्मृति-संबंधित हैं। – TigerhawkT3