2017-07-07 4 views
0

J'ai un paquet Python que je suis benchmarking pour la mémoire virtuelle utilisée.Comment garder trace de la mémoire virtuelle utilisée lors de l'exécution de code Python?

À l'heure actuelle, ce n'est pas très précis. Je soumets le script par exemple

python script1.py 

et de regarder le temps et les ressources utilisées pour exécuter.

Existe-t-il un package/une méthode permettant de savoir où se trouvent mes goulots d'étranglement? Je pense à un outil comme

ram_used python script1.py 

qui garderait une trace de la quantité de RAM utilisée.

Une telle chose existe-t-elle?

+0

Que voulez-vous dire avec * goulots d'étranglement de RAM *? Voulez-vous savoir * où * le programme utilise beaucoup de mémoire? Ou simplement combien? –

+0

Le type général d'outil s'appelle un «profileur» et il se lie généralement à votre système d'exploitation plutôt qu'à une langue particulière. – Prune

+0

@WillemVanOnsem Tout simplement combien – ShanZhengYang

Répondre

2

Oui, il y a - Ça s'appelle memory_profiler. Une fois que vous avez terminé et ajouté le décorateur @profile aux fonctions que vous souhaitez profiler, vous pouvez utiliser;

python -m memory_profiler example.py 
+0

Quelle version de Python? 2.7 et 3.5.4 nient toute connaissance de 'memory_profiler' pour moi. – Prune

+1

L'avez-vous installé avec pip? 'pip install -U memory_profiler' fonctionne correctement avec python 2.7.1. –

+1

Merci; ma commande "install" est aliasée en 'yum'; 'pip' travaillé, et le profilage a fonctionné. – Prune

-1

Il y a aussi memory_infopsutil. https://pythonhosted.org/psutil/

place au début du script:

import psutil 
p = psutil.Process() 

et étant donné que le code fonctionne correctement, placez ceci sur la dernière ligne:

print(p.memory_info())