2009-07-30 3 views
9

के भीतर से कुल/मुक्त रैम प्राप्त करना एक पायथन एप्लिकेशन के भीतर से, मैं सिस्टम की रैम की कुल राशि कैसे प्राप्त कर सकता हूं और वर्तमान में यह कितना मुफ्त है, क्रॉस-प्लेटफ़ॉर्म तरीके से?पाइथन

आदर्श रूप से, मुफ्त रैम की मात्रा केवल भौतिक स्मृति पर विचार करनी चाहिए जिसे वास्तव में पायथन प्रक्रिया में आवंटित किया जा सकता है।

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/466684/how-can-i-return-system-information-in-python/ और http : //stackoverflow.com/questions/276052/how-to-get-current-cpu-and-ram-usage-in-python –

+1

कुल रैम और वर्तमान में नि: शुल्क प्लेटफॉर्म अवधारणाएं नहीं हैं। विंडोज और जीएनयू/लिनक्स विभिन्न ऑपरेटिंग सिस्टम हैं। आप कौन सा चाहते है? दूसरा अलग होगा। –

+0

psutil इस पर एक महान काम करता है। – meawoppl

उत्तर

12

क्या आपने SIGAR - System Information Gatherer And Reporter को आजमाया है? के बाद स्थापित

import os, sigar 

sg = sigar.open() 
mem = sg.mem() 
sg.close() 
print mem.total()/1024, mem.free()/1024 

आशा इस मदद करता है

+1

हालांकि यह स्वीकार्य उत्तर शायद पूरी तरह मान्य है, 2015 में एक बेहतर समाधान अब psutil (जैसा कि ग्रिंगो सुवे द्वारा अनुशंसित) है, जो मानक पुस्तकालय का हिस्सा नहीं है, लेकिन कम से कम पीआईपी के माध्यम से पूरी तरह से दर्द रहित रूप से उपलब्ध है। –

3

आप इसे मानक पायथन पुस्तकालय के साथ नहीं कर सकते हैं, हालांकि ऐसा कुछ तृतीय पक्ष पैकेज हो सकता है जो ऐसा करता है। इसे छोड़कर, आप यह निर्धारित करने के लिए ओएस पैकेज का उपयोग कर सकते हैं कि आप किस ऑपरेटिंग सिस्टम पर हैं और उस जानकारी का उपयोग उस सिस्टम के लिए इच्छित जानकारी प्राप्त करने के लिए करें (और इसे एक क्रॉस-प्लेटफ़ॉर्म फ़ंक्शन में शामिल करें)।

+0

मैंने यही पाया ... लेकिन मैं इसे प्रत्येक प्रमुख ओएस पर कैसे पूरा करूं? – Algorias

+1

ठीक है, जैसा कि सनकियांग पोस्ट किया गया है, आप सिगार की कोशिश कर सकते हैं (सुनिश्चित नहीं है कि अन्य निर्भरताओं के पास क्या हो सकता है, यदि कोई हो)। लिनक्स पर, आप/proc/meminfo से स्मृति जानकारी प्राप्त कर सकते हैं, और अन्य इकाइयों पर आप इसे vmstat चलाने से प्राप्त कर सकते हैं। विंडोज़ पर आपको शायद कुछ Win32 एपीआई (जिसे आप ctypes के साथ कर सकते हैं, या पायथन Win32 पैकेज के साथ) को कॉल करना होगा। –

6

मुक्त स्मृति भाग के लिए, वहाँ wx पुस्तकालय में एक समारोह है:

wx.GetFreeMemory() 

दुर्भाग्य से, विंडोज पर यह केवल काम करता है। लिनक्स और मैक पोर्ट्स या तो "-1" लौटाते हैं या NotImplementedError बढ़ाते हैं।

+0

मुझे 'wx.GetFreeMemory()' का उपयोग करके 'NotImplementedError' मिला – alvas

6

psutil एक और अच्छी पसंद होगी। हालांकि इसे पुस्तकालय स्थापित करने की भी आवश्यकता है।

>>> import psutil 
>>> psutil.virtual_memory() 
vmem(total=8374149120L, available=2081050624L, percent=75.1, 
    used=8074080256L, free=300068864L, active=3294920704, 
    inactive=1361616896, buffers=529895424L, cached=1251086336) 
1

विंडोज़ में मैं इस विधि का उपयोग करता हूं। यह थोड़े hacky है, लेकिन यह मानक ओएस लाइब्रेरी का उपयोग कर काम करता है:

import os 
process = os.popen('wmic memorychip get capacity') 
result = process.read() 
process.close() 
totalMem = 0 
for m in result.split(" \r\n")[1:-1]: 
    totalMem += int(m) 
print totalMem/(1024**3)