UNIX संसाधन उपयोग को मापने के लिए, हमें अपने कार्यक्रमों में संसाधन मॉड्यूल का उपयोग करने की आवश्यकता है। यह मॉड्यूल संसाधन उपयोग को भी नियंत्रित कर सकता है।
इस मॉड्यूल का उपयोग करने के लिए, हमें इसका उपयोग करके आयात करना चाहिए -
import resource
संसाधन सीमाएं
इस मॉड्यूल में हम संसाधन उपयोग को सीमित करने के लिए setrlimit () का उपयोग कर सकते हैं। संसाधनों को सीमित करने के लिए दो पैरामीटर हैं। ये पैरामीटर सॉफ्ट लिमिट और हार्ड लिमिट हैं। नरम सीमा मूल रूप से वर्तमान सीमा है, इसे प्रक्रिया में बदला जा सकता है, लेकिन यह कठिन सीमा से अधिक नहीं हो सकता है। हार्ड लिमिट को सॉफ्ट लिमिट से ऊपर किसी भी वैल्यू तक घटाया जा सकता है, लेकिन इसे बढ़ाया नहीं जा सकता।
संसाधन सीमित करने से संबंधित कुछ विधियाँ और स्थिरांक हैं। ये हैं।
विधि संसाधन.getrlimit(संसाधन)
इस विधि का उपयोग नरम और कठोर सीमाओं को टपल के रूप में वापस करने के लिए किया जाता है। यदि निर्दिष्ट संसाधन अमान्य है, तो यह ValueError बढ़ा देगा।
विधि संसाधन.सेटरलिमिट(संसाधन, सीमा)
इस पद्धति का उपयोग संसाधनों की सीमा निर्धारित करने के लिए किया जाता है। सीमाओं को सॉफ्ट और हार्ड लिमिट के टपल के रूप में असाइन किया जा सकता है। हम असीमित संसाधन बनाने के लिए RLIM_INFINITY का भी उपयोग कर सकते हैं।
विधि Resource.prlimit(pid, Resource[, Limits])
यह विधि setrlimit () और getrlimit () विधियों का एक संयोजन है। यह एक मनमानी प्रक्रिया के लिए एक ही समय में संसाधन सीमाएँ प्राप्त और निर्धारित कर सकता है। जब pid 0 होता है, तब यह वर्तमान प्रक्रिया पर कार्य करता है।
संसाधन सीमा से संबंधित कुछ स्थिरांक -
<टीडी>RLIM_INFINITY
असीमित संसाधन के लिए सीमा
<टीडी>RLIMIT_CORE
वर्तमान प्रक्रिया द्वारा बनाई गई कोर फ़ाइल का अधिकतम आकार।
<टीडी>RLIMIT_CPU
एक प्रोसेसर का अधिकतम प्रोसेसर समय। जब सीमा पार हो जाती है, तो प्रक्रिया को एक SIGXCCPU सिग्नल भेजा जाता है।
<टीडी>RLIMIT_DATA
प्रोसेसर के ढेर का अधिकतम आकार
<टीडी>RLIMIT_STACK
कॉल स्टैक का अधिकतम आकार। यह बहु-थ्रेडेड प्रक्रिया के लिए मुख्य धागे के ढेर का उपयोग करता है।
<टीडी>RLIMIT_NOFILE
वर्तमान प्रक्रिया के लिए ओपन फाइल डिस्क्रिप्टर की अधिकतम संख्या।
<टीडी>RLIMIT_MEMLOCK
लॉक की गई मेमोरी के लिए अधिकतम पता स्थान
<टीडी>RLIMIT_NICE
एक प्रक्रिया के अच्छे स्तर की छत
<टीडी>RLIMIT_SWAP
स्वैप स्थान का अधिकतम आकार
<टीडी>RLIMIT_NTPS
सिस्टम में छद्म टर्मिनलों की अधिकतम संख्या
Sr.No. | स्थिरांक और विवरण |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 |
संसाधन उपयोग
संसाधन उपयोग से संबंधित विधियां और स्थिरांक हैं।
विधि संसाधन.getrusage(कौन)
इस पद्धति का उपयोग वर्तमान प्रक्रिया या उसके बच्चों द्वारा उपयोग की जाने वाली वस्तु को वापस करने के लिए किया जाता है। यह विभिन्न क्षेत्रों को लौटाता है। वापसी मूल्य के क्षेत्रों से, हम इस बारे में जानकारी प्राप्त कर सकते हैं कि संसाधन का उपयोग कैसे किया गया है।
विधि Resource.getpagesize()
सिस्टम पेज में बाइट्स की संख्या वापस करने के लिए इस विधि का उपयोग किया जाता है। यह भौतिक पृष्ठ आकार के समान नहीं हो सकता है।
संसाधन उपयोग से संबंधित कुछ स्थिरांक।
<टीडी>RUSAGE_SELF
यह कॉलिंग प्रक्रिया द्वारा उपभोग किए गए संसाधनों का अनुरोध करने में मदद करता है। यह विभिन्न धागों के सभी संसाधनों का योग है।
<टीडी>RUSAGE_CHILDREN
यह चाइल्ड प्रोसेस द्वारा उपभोग किए गए संसाधनों का अनुरोध करने में मदद करता है।
<टीडी>RUSAGE_BOTH
यह कॉलिंग प्रक्रिया के साथ-साथ चाइल्ड प्रोसेस द्वारा उपभोग किए गए संसाधनों का अनुरोध करने में मदद करता है। यह सभी प्रणालियों के लिए उपलब्ध नहीं है
<टीडी>RUSAGE_THREAD
वर्तमान थ्रेड द्वारा संसाधन उपयोग। यह सभी प्रणालियों के लिए उपलब्ध नहीं है
Sr.No. | स्थिरांक और विवरण |
---|---|
1 | |
2 | |
3 | |
4 |
उदाहरण कोड
import resource res_limits = resource.getrusage(resource.RUSAGE_SELF) print(res_limits) print('Page Size: ' + str(resource.getpagesize())) resource.setrlimit(resource.RLIMIT_CPU, (1, 2)) print('Resouce Limits: ' + str(resource.getrlimit(resource.RLIMIT_CPU))) for a in range(1000): for b in range(1000): for c in range(1000): pass
आउटपुट
$ python3 example.py resource.struct_rusage(ru_utime=0.035801, ru_stime=0.01074, ru_maxrss=9356, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=1147, ru_majflt=0, ru_nswap=0, ru_inblock=0, ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=0, ru_nivcsw=17) Page Size: 4096 Resouce Limits: (1, 2) CPU time limit exceeded (core dumped)