मेरा एक साधारण सवाल है।

मैं अक्सर बड़े डेटासेट वाले पंडों में जटिल संगणनाएँ चलाता हूँ। कभी-कभी अजगर रैम का उपयोग उस बिंदु तक अधिक करता रहता है जहां सब कुछ संतृप्त हो जाता है और मेरा कंप्यूटर मूल रूप से क्रैश हो जाता है। मैं विंडोज़ मशीन पर एनाकोंडा वितरण का उपयोग करता हूं।

क्या एक थ्रेशोल्ड सेट करना संभव है (जैसे 98%) कि अगर रैम का उपयोग उस सीमा से ऊपर चला जाता है, तो कर्नेल को फिर से शुरू किया जाना चाहिए या प्रक्रिया को मार दिया जाना चाहिए?

2
ℕʘʘḆḽḘ 19 मार्च 2016, 00:37

1 उत्तर

सबसे बढ़िया उत्तर

यूनिक्स सिस्टम पर अपेक्षाकृत आसान लगता है (https://docs. python.org/2/library/resource.html#resource.setrlimit)। हालांकि, विंडोज़ सिस्टम के लिए स्मृति की मात्रा को सीमित करने का एक आंतरिक पायथन तरीका प्रतीत नहीं होता है। फिर आपको विंडोज एपीआई पर निर्भर रहना होगा। जहाँ तक मैं बता सकता हूँ इस उत्तर से, आप सबसे अच्छे होंगे एक जॉब ऑब्जेक्ट बनाना बंद करें, और सहयोगी यह अजगर प्रक्रिया के साथ। तब आप प्रक्रिया की स्मृति को सीमित करने के लिए JOB_OBJECT_LIMIT_JOB_MEMORY का उपयोग करेंगे। या संभवतः आप SetProcessWorkingSetSize.

1
Community 23 मई 2017, 14:50