आर

2011-06-23 5 views
22

में रैम की मात्रा की जांच कैसे करें मैं एक ऐसा फ़ंक्शन बनाना चाहता हूं जो किसी भी सिस्टम पर कितनी रैम उपलब्ध हो, इस पर निर्भर करता है कि बैच की विभिन्न संख्याओं में डेटा आयात करता है। लेकिन मैं आर में उपलब्ध रैम की मात्रा कैसे प्राप्त कर सकता हूं? मैं memory.size() का उपयोग कर सकता हूं लेकिन यह केवल विंडोज के लिए काम करता है।आर

+3

आप यह करने के लिए एक विधि को लागू करने नहीं जा रहे हैं। आपको मंच का पता लगाने के लिए विभिन्न तरीकों का उपयोग करना होगा। –

+0

* "यदि आपको कीमत मांगनी है, तो आप इसे बर्दाश्त नहीं कर सकते हैं।" * यह गलत दृष्टिकोण दिखता है क्योंकि ऑपरेटिंग सिस्टम द्वारा स्मृति और संसाधन प्रबंधन को संभाला जाता है। जैसा कि रामाउंड ने कहा, आपका दृष्टिकोण मंच-निर्भर बन जाएगा। –

+3

विचार एक कच्चे मान को प्राप्त करना है जो डिफ़ॉल्ट रूप से कुछ हद तक काम करता है। उदाहरण के लिए, 12 जीबी के साथ 1 बैच, 6 जीबी के साथ 2, इत्यादि। प्लेटफार्म 'Sys.info()' के साथ पाया जा सकता है, इसलिए मंच निर्भर दृष्टिकोण सही होना चाहिए? –

उत्तर

24

मंच-निर्भरता पहले टिप्पणी में चर्चा के विषय में चेतावनी को देखते हुए, आप उदाहरण के लिए लिनक्स पर /proc/meminfo पार्स सकता है:

$ grep MemFree /proc/meminfo 
MemFree:   573660 kB 
$ awk '/MemFree/ {print $2}' /proc/meminfo 
565464 

आप system(..., intern=TRUE) के माध्यम से दूसरा दृष्टिकोण की कोशिश कर सकते हैं, या यहां तक ​​कि एक पाइप कनेक्शन के माध्यम से।

संपादित कुछ 5 + साल बाद: आर में, और सिर्फ निम्नलिखित क्या पिछले पैराग्राफ की ओर संकेत किया:

R> memfree <- as.numeric(system("awk '/MemFree/ {print $2}' /proc/meminfo", 
+        intern=TRUE)) 
R> memfree 
[1] 3342480 
R> 
+0

मैं इस फ़ंक्शन को उपलब्ध स्मृति की वास्तविक मात्रा प्राप्त करने के लिए कॉल करने से पहले 'gc()' का उपयोग करने की अनुशंसा करता हूं। –

+0

आउटपुट इकाई बाइट्स है? विंडोज़ में आर आमतौर पर –

+2

निर्दिष्ट करता है जो कॉपी-पेस्टेबल कोड पसंद करते हैं: 'as.numeric (system (" awk '/ memFree/{print $ 2}'/proc/meminfo ", intern = TRUE))' – MichaelChirico