Re: [Python] Compter le nombre d'appel

トップ ページ

このメッセージに返信
著者: Jérôme Kieffer
日付:  
To: guilde
題目: Re: [Python] Compter le nombre d'appel
On Tue, 31 Jan 2017 16:51:29 +0100
Nicolas Ecarnot <nicolas@???> wrote:

> Le 31/01/2017 à 10:44, Nicolas Ecarnot a écrit :
> > Bonjour,
> >
> > Je débute en Python, et comme tout bon débutant, je cherche à faire des
> > trucs bizarres :
> > - Je cherche à afficher le nombre de fois qu'une fonction est appelée,
> > sachant que je ne connais pas d'avance cette info en codant.
> > - Je voudrais coder et appeler cette fonction n fois, et qu'en début de
> > script, j'affiche le nombre de fois où cet appel apparaît dans mon code.
> >
> > J'ai cru comprendre que les bons mots-clefs sont introspection,
> > self-reference, quine, dis
> > Mais je galère un peu à faire un truc propre.
> > Donc si vous avez des pistes, je vous remercie.
> >
>
> Bon, pour garder une trace, voilà le truc que j'ai fait et qui
> fonctionne (les experts Python peuvent fermer les yeux) :
>
> def get_steps_number(fname):
>          count = 0
>          for line in open(fname).readlines():
>                  if line.strip().find('print_step', 0) != -1:
>                          count += 1
>          return count

>
> path = os.path.dirname(os.path.realpath(__file__))
> complete_path = path + '/' + __file__
> nb_steps = get_steps_number(complete_path)


en single-liner (à la perl):
get_steps_number = lambda fname: sum(1 for line in open(fname) if 'print_step' in line)

c'est 2.4x plus rapide.

Le problème c'est que le fichier n'est pas fermé (effets de bords
possibles sous windows)

A+

Jerome