50 votes

Comment vérifier la quantité de RAM dans R

Je veux créer une fonction qui importe des données en différents nombres de lots en fonction de la quantité de RAM disponible sur le système de quelqu'un. Mais comment puis-je trouver la quantité de RAM disponible dans R ? Je peux utiliser memory.size() mais cela ne fonctionne que pour Windows.

3 votes

Vous n'allez pas mettre en œuvre une seule méthode pour y parvenir. Vous allez devoir détecter la plate-forme puis utiliser différentes méthodes.

0 votes

"Si tu dois demander le prix, c'est que tu ne peux pas te le permettre." Cela semble être une mauvaise approche car la gestion de la mémoire et des ressources est gérée par le système d'exploitation. Comme l'a dit Ramhound, votre approche sera dépendante de la plate-forme.

3 votes

L'idée est d'obtenir une valeur brute qui fonctionne un peu comme une valeur par défaut. Par exemple, 1 lot avec 12gb, 2 avec 6gb, etcetera. La plateforme peut être trouvée avec Sys.info() L'approche dépendante de la plateforme devrait donc être possible, non ?

49voto

Dirk Eddelbuettel Points 134700

Compte tenu des avertissements concernant la dépendance à l'égard de la plate-forme, évoqués dans le commentaire précédent, vous pourriez par exemple interpréter /proc/meminfo sur Linux :

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

Vous pouvez essayer la deuxième approche via system(..., intern=TRUE) ou même par le biais d'un tuyau.

Éditer quelques 5+ ans plus tard : En R, et en suivant simplement ce que le paragraphe précédent laissait entendre :

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

6 votes

Je recommande d'utiliser gc() avant d'appeler cette fonction pour obtenir la vraie quantité de mémoire disponible.

3 votes

L'unité de sortie est-elle l'octet ? R sous Windows spécifie généralement

19 votes

Pour ceux qui préfèrent le code à copier-coller : as.numeric(system("awk '/MemFree/ {print $2}' /proc/meminfo", intern=TRUE))

14voto

F. Privé Points 6755

Je recommande d'utiliser memuse::Sys.meminfo() .

10voto

user5029763 Points 1253

Vous pouvez désormais le faire avec benchmarkme::get_ram función.

https://cran.r-project.org/web/packages/benchmarkme/benchmarkme.pdf

0 votes

get_ram() ne peut pas obtenir la mémoire disponible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X