2009-01-21 28 views
24

अजगर का उपयोग करना, कैसे कर सकते जानकारी CPU उपयोग, मेमोरी उपयोग (मुक्त, इस्तेमाल किया, आदि), प्रक्रिया गिनती, आदि के रूप में इस तरह के एक सामान्य तरीके से वापस कर दी, ताकि एक ही कोड लिनक्स, विंडोज, बीएसडी, आदि पर चलाया जा सकता है?मैं पायथन में सिस्टम जानकारी कैसे वापस कर सकता हूं?

वैकल्पिक रूप से, यह जानकारी कैसे कोड है कि ओएस के लिए विशिष्ट के साथ सब से ऊपर सिस्टम पर वापस आने वाले चलाया जा रहा ही अगर है कि ओएस वास्तव में ऑपरेटिंग वातावरण है?

+2

पीआईपी psutil – meawoppl

उत्तर

17

पार मंच के बारे में: आपका सर्वश्रेष्ठ दांव शायद प्लेटफ़ॉर्म-विशिष्ट कोड लिखने के लिए, और फिर इसे सशर्त आयात है। जैसे

import sys 
if sys.platform == 'win32': 
    import win32_sysinfo as sysinfo 
elif sys.platform == 'darwin': 
    import mac_sysinfo as sysinfo 
elif 'linux' in sys.platform: 
    import linux_sysinfo as sysinfo 
#etc 

print 'Memory available:', sysinfo.memory_available() 

विशिष्ट संसाधनों के लिए, के रूप में एंथनी बताते हैं आप लिनक्स के तहत /proc पहुँच सकते हैं। विंडोज के लिए, आप Microsoft Script Repository पर चारों ओर एक पोक हो सकता है। मुझे यकीन है कि जहां Macs पर जानकारी उस तरह का पाने के लिए नहीं कर रहा हूँ, लेकिन मैं एक महान वेबसाइट है, जहां आप :-)

+5

+1: प्रत्येक ओएस * अलग है। कुछ अवधारणाओं को मानचित्र नहीं है। इसे ओएस-अज्ञेयवादी नहीं बनाया जा सकता है। यह प्रत्येक ओएस के लिए एक अद्वितीय कार्यान्वयन के साथ polymorphic होना चाहिए। –

+1

मैं मानता हूं कि यह शायद सबसे अच्छा तरीका है। मैंने ओएस एक्स/विंडोज विनिर्देशों के लिए 2 नए प्रश्न बनाए हैं। http://stackoverflow.com/questions/467600/how-can-i-read-system-information-in-python-on-os-x और http://stackoverflow.com/questions/467602/how-can- i-पढ़ने के लिए सिस्टम-जानकारी-इन-अजगर-ऑन-खिड़कियां – DavidM

1

ऐसा लगता है कि आप मानक अजगर पुस्तकालय प्रदान करता है की तुलना में बहुत अधिक जानकारी प्राप्त करना चाहते हैं पर एक नज़र डालें। अगर मैं आप थे, तो मैं 'पीएस' या 'टॉप', या जीनोम/केडीई संस्करण के लिए स्रोत कोड डाउनलोड करूंगा, या सिस्टम निगरानी/ग्राफिंग प्रोग्राम की किसी भी संख्या को डाउनलोड कर सकता हूं, जिसमें सभी आवश्यक यूनिक्स क्रॉस होने की अधिक संभावना है मंच बिट्स, देखें कि वे क्या करते हैं, और उसके बाद आवश्यक देशी कॉल ctypes के साथ बनाते हैं।

मंच का पता लगाने के लिए यह छोटा है। उदाहरण के लिए ctypes के साथ आप libc.so लोड करने का प्रयास कर सकते हैं, अगर यह अपवाद फेंकता है तो 'msvcrt.dll' को लोड करने का प्रयास करें और इसी तरह। Os.name के साथ ऑपरेटिंग सिस्टम के नाम की जांच करने के लिए बस उल्लेख नहीं है। फिर उचित प्लेटफार्म-विशिष्ट (माफ करना) कार्यान्वयन के लिए अपने नए क्रॉस-प्लेटफ़ॉर्म एपीआई पर कॉल करें।

कार्य पूरा हो जाने, pypi के परिणामस्वरूप पैकेज अपलोड करने के लिए मत भूलना।

5

लिनक्स वातावरण में आप/proc फ़ाइल सिस्टम से पढ़ सकते हैं।

~$ cat /proc/meminfo 
MemTotal:  2076816 kB 
MemFree:  130284 kB 
Buffers:  192664 kB 
Cached:  1482760 kB 
SwapCached:   0 kB 
Active:   206584 kB 
Inactive:  1528608 kB 
HighTotal:  1179484 kB 
HighFree:  120768 kB 
LowTotal:  897332 kB 
LowFree:   9516 kB 
SwapTotal:  2650684 kB 
SwapFree:  2650632 kB 
Dirty:    64 kB 
Writeback:   12 kB 
AnonPages:  59668 kB 
Mapped:   22008 kB 
Slab:   200744 kB 
PageTables:  1220 kB 
NFS_Unstable:  0 kB 
Bounce:    0 kB 
CommitLimit: 3689092 kB 
Committed_AS: 263892 kB 
VmallocTotal: 114680 kB 
VmallocUsed:  3604 kB 
VmallocChunk: 110752 kB 
2
+6

स्थापित करें प्लेटफ़ॉर्म मॉड्यूल उन चीज़ों में से कोई भी वापस नहीं लौटाता है जो वह ढूंढ रहे हैं। – DNS

0

कि उद्देश्य के साथ PSI (अजगर सिस्टम जानकारी) परियोजना नहीं है, लेकिन वे नहीं है विंडोज अभी तक कवर करें।

आप शायद पीएसआई और recpies like this one का उपयोग करें और एक बुनियादी पुस्तकालय है कि अपनी आवश्यकताओं को पूरा बना सकते हैं।

2

psutil पूछना प्रदान करना चाहिए कि तुम क्या जरूरत हो सकती है के बारे में सोच सकते हैं:

[.. ]] चल रही प्रक्रियाओं और सिस्टम उपयोग (सीपीयू, मेमोरी, डिस्क, नेटवर्क) पर जानकारी प्राप्त करने के लिए क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी [...]

[...] लिनक्स, विंडोज़, ओएसएक्स, फ्रीबीएसडी और सन सोलारिस का समर्थन करता है, दोनों 32-बिट और 64-बिट आर्किटेक्चर [...]

संबंधित मुद्दे