je dois lancer divers programmes (C avec implémentation et options de
compilation différentes) et dois calculer leur empreinte mémoire et temps
d'exécution.
Avec subprocess (python 2.7) je peux lancer un sous process.
Mais qu'existe t'il pour calculer l'empreinte mémoire et la durée
d'exécution d'un sous programme?
je dois lancer divers programmes (C avec implémentation et options de compilation différentes) et dois calculer leur empreinte mémoire et temps d'exécution.
qu'existe t'il pour calculer l'empreinte mémoire et la durée d'exécution d'un sous programme?
getrusage, comme en C
http://docs.python.org/2/library/resource.html
Merci, ça colle bien avec ce que je veux faire. J'ai juste une question:
$ cat sleep.sh #!/bin/bash sleep 15
$ ipython In [1]: import subprocess In [2]: import resource In [3]: subprocess.call(['./sleep.sh']) Out[3]: 0 In [4]: r_usage = resource.getrusage(resource.RUSAGE_CHILDREN) In [5]: print "RSS mem used (kB): ", r_usage.ru_maxrss RSS mem used (kB): 9272 In [6]: print "Time used in user mode: ", r_usage.ru_utime Time used in user mode: 0.0 In [7]: print "Time used in system mode:", r_usage.ru_stime Time used in system mode: 0.0 In [8]:
Sur la taille: 9272kO (soit 9 Mega de RAM??) ça fait pas un peu beaucoup pour un sleep? Sur les durées Pourquoi 0?
Il faut s'assurer que la couche de python autour des différents programmes n'a pas d'incidence significative sur ce que tu mesures.
Effectivement, et dans mon cas ça n'a pas d'importance. -- Kevin
Le 15-03-2013, Alain Ketterlin <alain@dpt-info.u-strasbg.fr> a écrit :
je dois lancer divers programmes (C avec implémentation et options de
compilation différentes) et dois calculer leur empreinte mémoire et temps
d'exécution.
qu'existe t'il pour calculer l'empreinte mémoire et la durée
d'exécution d'un sous programme?
getrusage, comme en C
http://docs.python.org/2/library/resource.html
Merci, ça colle bien avec ce que je veux faire. J'ai juste une question:
$ cat sleep.sh
#!/bin/bash
sleep 15
$ ipython
In [1]: import subprocess
In [2]: import resource
In [3]: subprocess.call(['./sleep.sh'])
Out[3]: 0
In [4]: r_usage = resource.getrusage(resource.RUSAGE_CHILDREN)
In [5]: print "RSS mem used (kB): ", r_usage.ru_maxrss
RSS mem used (kB): 9272
In [6]: print "Time used in user mode: ", r_usage.ru_utime
Time used in user mode: 0.0
In [7]: print "Time used in system mode:", r_usage.ru_stime
Time used in system mode: 0.0
In [8]:
Sur la taille: 9272kO (soit 9 Mega de RAM??) ça fait pas un peu beaucoup pour
un sleep?
Sur les durées
Pourquoi 0?
Il faut s'assurer que la couche de python autour des différents
programmes n'a pas d'incidence significative sur ce que tu mesures.
Effectivement, et dans mon cas ça n'a pas d'importance.
--
Kevin
je dois lancer divers programmes (C avec implémentation et options de compilation différentes) et dois calculer leur empreinte mémoire et temps d'exécution.
qu'existe t'il pour calculer l'empreinte mémoire et la durée d'exécution d'un sous programme?
getrusage, comme en C
http://docs.python.org/2/library/resource.html
Merci, ça colle bien avec ce que je veux faire. J'ai juste une question:
$ cat sleep.sh #!/bin/bash sleep 15
$ ipython In [1]: import subprocess In [2]: import resource In [3]: subprocess.call(['./sleep.sh']) Out[3]: 0 In [4]: r_usage = resource.getrusage(resource.RUSAGE_CHILDREN) In [5]: print "RSS mem used (kB): ", r_usage.ru_maxrss RSS mem used (kB): 9272 In [6]: print "Time used in user mode: ", r_usage.ru_utime Time used in user mode: 0.0 In [7]: print "Time used in system mode:", r_usage.ru_stime Time used in system mode: 0.0 In [8]:
Sur la taille: 9272kO (soit 9 Mega de RAM??) ça fait pas un peu beaucoup pour un sleep? Sur les durées Pourquoi 0?
Il faut s'assurer que la couche de python autour des différents programmes n'a pas d'incidence significative sur ce que tu mesures.
Effectivement, et dans mon cas ça n'a pas d'importance. -- Kevin
Alain Ketterlin
Kevin Denis writes:
getrusage, comme en C
http://docs.python.org/2/library/resource.html
Merci, ça colle bien avec ce que je veux faire. J'ai juste une quest ion:
$ cat sleep.sh #!/bin/bash sleep 15
$ ipython In [1]: import subprocess In [2]: import resource In [3]: subprocess.call(['./sleep.sh']) Out[3]: 0 In [4]: r_usage = resource.getrusage(resource.RUSAGE_CHILDREN) In [5]: print "RSS mem used (kB): ", r_usage.ru_maxrss RSS mem used (kB): 9272 In [6]: print "Time used in user mode: ", r_usage.ru_utime Time used in user mode: 0.0 In [7]: print "Time used in system mode:", r_usage.ru_stime Time used in system mode: 0.0 In [8]:
Sur la taille: 9272kO (soit 9 Mega de RAM??) ça fait pas un peu beau coup pour un sleep?
Tu oublies bash, qu'il a fallu lancer... Essaie avec /bin/sleep directement.
Merci, ça colle bien avec ce que je veux faire. J'ai juste une quest ion:
$ cat sleep.sh
#!/bin/bash
sleep 15
$ ipython
In [1]: import subprocess
In [2]: import resource
In [3]: subprocess.call(['./sleep.sh'])
Out[3]: 0
In [4]: r_usage = resource.getrusage(resource.RUSAGE_CHILDREN)
In [5]: print "RSS mem used (kB): ", r_usage.ru_maxrss
RSS mem used (kB): 9272
In [6]: print "Time used in user mode: ", r_usage.ru_utime
Time used in user mode: 0.0
In [7]: print "Time used in system mode:", r_usage.ru_stime
Time used in system mode: 0.0
In [8]:
Sur la taille: 9272kO (soit 9 Mega de RAM??) ça fait pas un peu beau coup pour
un sleep?
Tu oublies bash, qu'il a fallu lancer... Essaie avec /bin/sleep directement.
Merci, ça colle bien avec ce que je veux faire. J'ai juste une quest ion:
$ cat sleep.sh #!/bin/bash sleep 15
$ ipython In [1]: import subprocess In [2]: import resource In [3]: subprocess.call(['./sleep.sh']) Out[3]: 0 In [4]: r_usage = resource.getrusage(resource.RUSAGE_CHILDREN) In [5]: print "RSS mem used (kB): ", r_usage.ru_maxrss RSS mem used (kB): 9272 In [6]: print "Time used in user mode: ", r_usage.ru_utime Time used in user mode: 0.0 In [7]: print "Time used in system mode:", r_usage.ru_stime Time used in system mode: 0.0 In [8]:
Sur la taille: 9272kO (soit 9 Mega de RAM??) ça fait pas un peu beau coup pour un sleep?
Tu oublies bash, qu'il a fallu lancer... Essaie avec /bin/sleep directement.
C'est la durée passée en mode user et en mode noyau, ici juste le temps d'invoquer sleep(): le processus est mis en sommeil par le noyau pendant les 15 secondes, il ne s'exécute donc pas, donc le temps n'est pas compté.
Ok.
Si tu veux le temps d'horloge (absolu), il faudra utiliser time.clock().
Je n'ai pas du comprendre time.clock() car sa valeur est identique avant lancement du subprocess et après (?) Par contre time.time() me renvoie ce qui m'intéresse. start = time.time() (.. subprocess etc...) fin = time.time() print "temps total = ", round(fin-start,2)
Merci -- Kevin
Le 15-03-2013, Alain Ketterlin <alain@dpt-info.u-strasbg.fr> a écrit :
Sur les durées. Pourquoi 0?
C'est la durée passée en mode user et en mode noyau, ici juste le temps
d'invoquer sleep(): le processus est mis en sommeil par le noyau pendant
les 15 secondes, il ne s'exécute donc pas, donc le temps n'est pas
compté.
Ok.
Si tu veux le temps d'horloge (absolu), il faudra utiliser
time.clock().
Je n'ai pas du comprendre time.clock() car sa valeur est identique avant
lancement du subprocess et après (?)
Par contre time.time() me renvoie ce qui m'intéresse.
start = time.time()
(.. subprocess etc...)
fin = time.time()
print "temps total = ", round(fin-start,2)
C'est la durée passée en mode user et en mode noyau, ici juste le temps d'invoquer sleep(): le processus est mis en sommeil par le noyau pendant les 15 secondes, il ne s'exécute donc pas, donc le temps n'est pas compté.
Ok.
Si tu veux le temps d'horloge (absolu), il faudra utiliser time.clock().
Je n'ai pas du comprendre time.clock() car sa valeur est identique avant lancement du subprocess et après (?) Par contre time.time() me renvoie ce qui m'intéresse. start = time.time() (.. subprocess etc...) fin = time.time() print "temps total = ", round(fin-start,2)