Python 3.7 - resource

संसाधन - संसाधन उपयोग की जानकारी




python

संसाधन - संसाधन उपयोग की जानकारी

यह मॉड्यूल एक प्रोग्राम द्वारा उपयोग किए गए सिस्टम संसाधनों को मापने और नियंत्रित करने के लिए बुनियादी तंत्र प्रदान करता है।

प्रतीकात्मक स्थिरांक का उपयोग विशेष प्रणाली संसाधनों को निर्दिष्ट करने और वर्तमान प्रक्रिया या इसके बच्चों के बारे में उपयोग की जानकारी का अनुरोध करने के लिए किया जाता है।

एक OSError syscall विफलता पर उठाया जाता है।

exception resource.error

OSError का पदावनत किया हुआ अन्य नाम।

संस्करण 3.3 में परिवर्तित: PEP 3151 के बाद, इस वर्ग को OSError उपनाम बनाया गया।

संसाधन की सीमा

नीचे दिए गए setrlimit() फ़ंक्शन का उपयोग करके संसाधनों का उपयोग सीमित किया जा सकता है। प्रत्येक संसाधन को एक सीमा तक नियंत्रित किया जाता है: एक नरम सीमा और एक कठिन सीमा। नरम सीमा वर्तमान सीमा है, और इसे समय के साथ कम या बढ़ाया जा सकता है। नरम सीमा कभी भी कठोर सीमा से अधिक नहीं हो सकती। हार्ड लिमिट को सॉफ्ट लिमिट से अधिक किसी भी मूल्य पर कम किया जा सकता है, लेकिन उठाया नहीं गया। (केवल सुपर-उपयोगकर्ता के प्रभावी यूआईडी के साथ प्रक्रिया एक कठिन सीमा बढ़ा सकती है।)

विशिष्ट संसाधन जो सीमित हो सकते हैं वे सिस्टम पर निर्भर हैं। वे getrlimit (2) मैन पेज में वर्णित हैं। नीचे सूचीबद्ध संसाधन समर्थित हैं जब अंतर्निहित ऑपरेटिंग सिस्टम उनका समर्थन करता है; जिन संसाधनों को ऑपरेटिंग सिस्टम द्वारा चेक या नियंत्रित नहीं किया जा सकता है, उन प्लेटफार्मों के लिए इस मॉड्यूल में परिभाषित नहीं किया गया है।

resource.RLIM_INFINITY

एक असीमित संसाधन के लिए सीमा का प्रतिनिधित्व करने के लिए निरंतर उपयोग किया जाता है।

resource.getrlimit(resource)

संसाधन की वर्तमान नरम और कठिन सीमाओं के साथ एक टपल (soft, hard) । यदि कोई अमान्य संसाधन निर्दिष्ट किया गया है, या यदि अंतर्निहित सिस्टम कॉल अनपेक्षित रूप से विफल हो जाता है, तो ValueError

resource.setrlimit(resource, limits)

संसाधन की खपत की नई सीमा निर्धारित करता है। सीमा तर्क नई सीमाओं का वर्णन करने वाले दो पूर्णांकों का एक तुच्छ (soft, hard) होना चाहिए। RLIM_INFINITY मान का उपयोग असीमित सीमा के लिए किया जा सकता है।

यदि कोई नया संसाधन हार्ड सीमा से अधिक है, या यदि कोई प्रक्रिया अपनी हार्ड सीमा को बढ़ाने का प्रयास करती है, तो एक अमान्य संसाधन निर्दिष्ट किया जाता है, तो ValueError बढ़ाता है। RLIM_INFINITY उस सीमा को निर्दिष्ट करना जब उस संसाधन के लिए हार्ड या सिस्टम की सीमा असीमित नहीं है, जिसके परिणामस्वरूप ValueError । सुपर-उपयोगकर्ता के प्रभावी यूआईडी के साथ एक प्रक्रिया असीमित सहित किसी भी वैध सीमा मूल्य का अनुरोध कर सकती है, लेकिन अगर मांगी गई सीमा प्रणाली द्वारा निर्धारित सीमा से अधिक है, तो ValueError अभी भी उठाया जाएगा।

यदि अंतर्निहित सिस्टम कॉल विफल हो जाता है, तो setrlimit error भी कर सकता है।

resource.prlimit(pid, resource[, limits])

एक समारोह में setrlimit() और getrlimit() को getrlimit() और एक मनमानी प्रक्रिया की संसाधन सीमा को पाने और निर्धारित करने का समर्थन करता है। यदि पीआईडी 0 है, तो कॉल वर्तमान प्रक्रिया पर लागू होती है। संसाधन और सीमा का एक ही अर्थ होता है जैसा कि setrlimit() , सिवाय इसके कि सीमाएं वैकल्पिक हैं।

जब सीमा को फ़ंक्शन नहीं दिया जाता है, तो प्रक्रिया की संसाधन सीमा वापस आती है। जब सीमा दी जाती है तो प्रक्रिया की संसाधन सीमा निर्धारित की जाती है और पूर्व संसाधन सीमा वापस कर दी जाती है।

जब उपयोगकर्ता के पास इस प्रक्रिया के लिए CAP_SYS_RESOURCE नहीं है, तो CAP_SYS_RESOURCE नहीं मिल सकता है और PermissionError प्राप्त होने पर ProcessLookupError उठाता है।

उपलब्धता: लिनक्स 2.6.36 या बाद में glibc 2.13 या बाद में

संस्करण 3.4 में नया।

ये प्रतीक उन संसाधनों को परिभाषित करते हैं जिनकी खपत setrlimit() और getrlimit() नीचे वर्णित कार्यों का उपयोग करके नियंत्रित की जा सकती है। इन प्रतीकों के मूल्य बिल्कुल सी कार्यक्रमों द्वारा उपयोग किए जाने वाले स्थिरांक हैं।

Getrlimit (2) के लिए यूनिक्स मैन पेज उपलब्ध संसाधनों को सूचीबद्ध करता है। ध्यान दें कि सभी सिस्टम समान संसाधन को निरूपित करने के लिए समान प्रतीक या समान मान का उपयोग नहीं करते हैं। यह मॉड्यूल प्लेटफ़ॉर्म अंतरों को मास्क करने का प्रयास नहीं करता है - एक प्लेटफ़ॉर्म के लिए परिभाषित नहीं किए गए प्रतीक उस प्लेटफ़ॉर्म पर इस मॉड्यूल से उपलब्ध नहीं होंगे।

resource.RLIMIT_CORE

एक कोर फ़ाइल का अधिकतम आकार (बाइट्स में) जो वर्तमान प्रक्रिया बना सकती है। इसके परिणामस्वरूप आंशिक कोर फ़ाइल का निर्माण हो सकता है यदि पूरी प्रक्रिया छवि को शामिल करने के लिए बड़े कोर की आवश्यकता होगी।

resource.RLIMIT_CPU

प्रोसेसर समय की अधिकतम राशि (सेकंड में) जो एक प्रक्रिया का उपयोग कर सकती है। यदि यह सीमा पार हो गई है, तो एक SIGXCPU सिग्नल प्रक्रिया को भेजा जाता है। (इस सिग्नल को कैसे पकड़ना है और कुछ उपयोगी काम करना है, जैसे डिस्क के लिए खुली फ़ाइलों को फ्लश करने के बारे में जानकारी के लिए signal मॉड्यूल प्रलेखन देखें।)

resource.RLIMIT_FSIZE

एक फ़ाइल का अधिकतम आकार जो प्रक्रिया बना सकता है।

resource.RLIMIT_DATA

प्रक्रिया के ढेर का अधिकतम आकार (बाइट्स में)।

resource.RLIMIT_STACK

वर्तमान प्रक्रिया के लिए कॉल स्टैक का अधिकतम आकार (बाइट्स में)। यह केवल बहु-थ्रेड प्रक्रिया में मुख्य थ्रेड के स्टैक को प्रभावित करता है।

resource.RLIMIT_RSS

अधिकतम निवासी सेट आकार जिसे प्रक्रिया के लिए उपलब्ध कराया जाना चाहिए।

resource.RLIMIT_NPROC

वर्तमान प्रक्रिया में अधिकतम संख्या में प्रक्रियाएं बन सकती हैं।

resource.RLIMIT_NOFILE

वर्तमान प्रक्रिया के लिए ओपन फाइल डिस्क्रिप्टर की अधिकतम संख्या।

resource.RLIMIT_OFILE

RLIMIT_NOFILE का BSD नाम।

resource.RLIMIT_MEMLOCK

अधिकतम पता स्थान जो स्मृति में बंद हो सकता है।

resource.RLIMIT_VMEM

मैप की गई स्मृति का सबसे बड़ा क्षेत्र जिस पर प्रक्रिया हो सकती है।

resource.RLIMIT_AS

पता स्थान का अधिकतम क्षेत्र (बाइट्स) जो प्रक्रिया द्वारा लिया जा सकता है।

resource.RLIMIT_MSGQUEUE

POSIX संदेश कतारों के लिए आवंटित किए जाने वाले बाइट्स की संख्या।

उपलब्धता: लिनक्स 2.6.8 या बाद में।

संस्करण 3.4 में नया।

resource.RLIMIT_NICE

प्रक्रिया के अच्छे स्तर के लिए छत (20 के रूप में गणना की गई - rlim_cur)।

उपलब्धता: लिनक्स 2.6.12 या बाद में।

संस्करण 3.4 में नया।

resource.RLIMIT_RTPRIO

वास्तविक समय की प्राथमिकता की छत।

उपलब्धता: लिनक्स 2.6.12 या बाद में।

संस्करण 3.4 में नया।

resource.RLIMIT_RTTIME

सीपीयू समय पर समय सीमा (माइक्रोसेकंड में) कि एक प्रक्रिया एक अवरुद्ध syscall बनाने के बिना वास्तविक समय निर्धारण के तहत खर्च कर सकते हैं।

उपलब्धता: लिनक्स 2.6.25 या बाद में।

संस्करण 3.4 में नया।

resource.RLIMIT_SIGPENDING

संकेतों की संख्या जो प्रक्रिया कतार में हो सकती है।

उपलब्धता: लिनक्स 2.6.8 या बाद में।

संस्करण 3.4 में नया।

resource.RLIMIT_SBSIZE

इस उपयोगकर्ता के लिए सॉकेट बफर उपयोग का अधिकतम आकार (बाइट्स में)। यह नेटवर्क मेमोरी की मात्रा को सीमित करता है, और इसलिए mbufs की मात्रा, कि यह उपयोगकर्ता किसी भी समय पकड़ सकता है।

उपलब्धता: FreeBSD 9 या बाद में।

संस्करण 3.4 में नया।

resource.RLIMIT_SWAP

स्वैप स्थान का अधिकतम आकार (बाइट्स में) जो इस उपयोगकर्ता आईडी की सभी प्रक्रियाओं द्वारा आरक्षित या उपयोग किया जा सकता है। यह सीमा केवल तभी लागू की जाती है जब vm.overcommit sysctl का बिट 1 सेट किया जाता है। कृपया इस sysctl के संपूर्ण विवरण के लिए ट्यूनिंग (7) देखें।

उपलब्धता: FreeBSD 9 या बाद में।

संस्करण 3.4 में नया।

resource.RLIMIT_NPTS

इस उपयोगकर्ता आईडी द्वारा बनाए गए छद्म टर्मिनलों की अधिकतम संख्या।

उपलब्धता: FreeBSD 9 या बाद में।

संस्करण 3.4 में नया।

संसाधन उपयोग

इन कार्यों का उपयोग संसाधन उपयोग की जानकारी प्राप्त करने के लिए किया जाता है:

resource.getrusage(who)

यह फ़ंक्शन एक ऑब्जेक्ट देता है जो वर्तमान प्रक्रिया या उसके बच्चों द्वारा खपत संसाधनों का वर्णन करता है, जो कि पैरामीटर द्वारा निर्दिष्ट किया गया है। जो पैरामीटर नीचे वर्णित एक RUSAGE_* स्थिरांक का उपयोग करके निर्दिष्ट किया जाना चाहिए।

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

पश्चगामी संगतता के लिए, 16 तत्वों के टपल के रूप में वापसी मूल्य भी सुलभ है।

फ़ील्ड ru_utime और ru_stime ऑफ रिटर्न वैल्यू फ्लोटिंग पॉइंट वैल्यू हैं जो उपयोगकर्ता मोड में निष्पादित समय की मात्रा और सिस्टम मोड में निष्पादित समय की राशि का प्रतिनिधित्व करते हैं। शेष मान पूर्णांक हैं। इन मूल्यों के बारे में विस्तृत जानकारी के लिए गेट्रेज (2) मैन पेज से परामर्श करें। एक संक्षिप्त सारांश यहां प्रस्तुत है:

सूची खेत संसाधन
0 ru_utime उपयोगकर्ता मोड में समय (फ्लोट)
1 ru_stime सिस्टम मोड में समय (फ्लोट)
2 ru_maxrss अधिकतम निवासी सेट आकार
3 ru_ixrss साझा स्मृति आकार
4 ru_idrss स्मृतिहीन आकार
5 ru_isrss बिना तना हुआ आकार
6 ru_minflt पृष्ठ दोष I / O की आवश्यकता नहीं है
7 ru_majflt पृष्ठ दोष I / O की आवश्यकता है
8 ru_nswap स्वैप की संख्या
9 ru_inblock ब्लॉक इनपुट ऑपरेशन
10 ru_oublock आउटपुट ऑपरेशन ब्लॉक करें
11 ru_msgsnd संदेश भेजे गए
12 ru_msgrcv संदेश प्राप्त हुए
13 ru_nsignals संकेत मिले
14 ru_nvcsw स्वैच्छिक संदर्भ स्विच
15 ru_nivcsw अनैच्छिक संदर्भ स्विच

यह फ़ंक्शन ValueError को बढ़ाएगा यदि कोई अमान्य जो पैरामीटर निर्दिष्ट है। यह असामान्य परिस्थितियों में error अपवाद भी बढ़ा सकता है।

resource.getpagesize()

सिस्टम पेज में बाइट्स की संख्या देता है। (यह हार्डवेयर पेज के आकार के समान नहीं है।)

निम्नलिखित RUSAGE_* प्रतीकों को निर्दिष्ट करने के लिए जानकारी प्रदान की जानी चाहिए जो प्रक्रियाओं को निर्दिष्ट करने के लिए getrusage() फ़ंक्शन को पास किया जाता है।

resource.RUSAGE_SELF

कॉलिंग प्रक्रिया द्वारा उपभोग किए गए संसाधनों का अनुरोध करने के लिए getrusage() पास करें, जो प्रक्रिया में सभी थ्रेड्स द्वारा उपयोग किए जाने वाले संसाधनों का योग है।

resource.RUSAGE_CHILDREN

कॉलिंग प्रक्रिया की बाल प्रक्रियाओं द्वारा उपभोग किए गए संसाधनों का अनुरोध करने के लिए getrusage() पास करें जिन्हें समाप्त कर दिया गया है और जिनकी प्रतीक्षा की जा रही है।

resource.RUSAGE_BOTH

वर्तमान प्रक्रिया और बाल प्रक्रियाओं दोनों द्वारा उपभोग किए गए संसाधनों का अनुरोध करने के लिए getrusage() पास। सभी प्रणालियों पर उपलब्ध नहीं हो सकता है।

resource.RUSAGE_THREAD

वर्तमान थ्रेड द्वारा उपभोग किए गए संसाधनों का अनुरोध करने के लिए getrusage() पास करें। सभी प्रणालियों पर उपलब्ध नहीं हो सकता है।

संस्करण 3.2 में नया।