2010-07-08 8 views

Répondre

0

Si vous voulez dire le temps passé au cours d'un programme, une fois le programme terminé, alors la meilleure chose à faire est de lancer la unix fonction « temps »:

# echo foo 
foo 

# time echo foo 
foo 

real  0m0.000s 
user  0m0.000s 
sys 0m0.000s 

Il y a une réponse plus technique si vous avez vraiment besoin de faire la collecte des données alors que le programme est en cours d'exécution - Je vais jeter un coup d'oeil au livre unix pour vous ...

Mise à jour:

clock_t fois (struct tms * buf);

Recherchez les détails sur la page de manuel ou dans la section 8.15 de «Programmation avancée dans l'environnement UNIX» - Stevens - la bible pour ce genre de questions.

Mise à jour 2:

Run « sar » dans un autre processus (c'est comme une version stdout impression de haut), pour trouver un résultat que vous voulez, et envoyer un signal au processus.

Alternativement, l'autre solution publiée concernant "ioreg".

Cependant, si vous avez un programme qui est lui-même de type "noyau", avec une grande boucle d'action à la base, vous trouverez peut-être mieux de suivre vous-même les cycles inutilisés. Sinon, il s'agit d'un problème non trivial à résoudre.

+0

Exécution d'un écho via l'invite du superutilisateur? ;) – zneak

+0

@zneak - ouais, tant que vous faites une copie de/proc pendant que vous le faites. :-) – eruciform

+0

Question mise à jour – Gci1

0

qu'en est-il de python (win)? comme module de temps en lib standard de python ...?

0

Votre application est-elle pilotée par l'interface graphique? Si tel est le cas, vous pouvez démarrer une minuterie lorsque l'interface graphique apparaît, puis avoir des rappels au clavier et à la souris au niveau supérieur. Chaque fois que le rappel du clavier ou de la souris est déclenché, réinitialisez le minuteur. Sinon, lorsque la minuterie s'éteint, son code de gestionnaire devrait suspendre votre compteur.

Sinon, ignorez ceci ... ;-)

Questions connexes