Je lis toujours le code pour calculer l'heure comme ceci:
%timeit function()
Pouvez-vous expliquer ce que signifie "%" ici?
Je pense que le "%" est toujours utilisé pour remplacer quelque chose dans une chaîne, comme% s signifie remplacer une chaîne,% d remplacer une donnée, mais je n'ai aucune idée de ce cas.
%timeit
est une fonction ipython magic , qui peut être utilisée pour chronométrer un morceau de code particulier (une seule instruction d'exécution ou une seule méthode).
De la docs:
% timeit
Time execution of a Python statement or expression Usage, in line mode: %timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement
Pour l'utiliser, par exemple si nous voulons savoir si utiliser xrange
est plus rapide que d'utiliser range
, vous pouvez simplement faire:
In [1]: %timeit for _ in range(1000): True
10000 loops, best of 3: 37.8 µs per loop
In [2]: %timeit for _ in xrange(1000): True
10000 loops, best of 3: 29.6 µs per loop
Et vous obtiendrez les horaires pour eux.
Le principal avantage de %timeit
sont:
que vous n'avez pas à importer timeit.timeit
, et exécutez le code plusieurs fois pour déterminer quelle est la meilleure approche.
% timeit calculera automatiquement le nombre d'analyses requis pour votre code en fonction d'une fenêtre d'exécution de 2 secondes au total.
Vous pouvez également utiliser les variables de la console en cours sans transmettre l'extrait de code complet comme dans le cas de timeit.timeit
pour construire la variable qui est construite dans un autre environnement pour lequel timeit fonctionne.
C'est ce qu'on appelle une ligne magique dans iPython. Ils sont uniques en ce sens que leurs arguments s’étendent jusqu’à la fin de la ligne actuelle et que les magies elles-mêmes sont réellement structurées pour le développement en ligne de commande. timeit
est utilisé pour chronométrer l'exécution du code.
Si vous voulez voir toutes les magies que vous pouvez utiliser, vous pouvez simplement taper:
%lsmagic
pour obtenir une liste des magies de ligne et des cellules.
Quelques informations magiques supplémentaires issues de la documentation ici :
IPython a un système de commandes appelé magics qui fournit efficacement un mini langage de commande orthogonal à la syntaxe de Python = et est extensible par l’utilisateur avec de nouvelles commandes.
Selon que vous êtes en mode ligne ou cellule, il y a deux façons différentes d'utiliser %timeit
. Votre question illustre le premier moyen:
In [1]: %timeit range(100)
vs.
In [1]: %%timeit
: x = range(100)
:
IPython les intercepte, elles s'appellent des commandes magiques intégrées, voici la liste: https://ipython.org/ipython-doc/dev/interactive/magics.html
Vous pouvez également créer vos propres magics personnalisés, https://ipython.org/ipython-doc/dev/config/custommagics.html
Votre timeit
est ici https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-timeit
Je voudrais juste ajouter un autre avantage utile d'utiliser% timeit à réponse par mu 無 que:
PS: Je sais que ce devrait être un commentaire à répondre ci-dessus, mais je n’ai pas assez de réputation pour le moment. J'espère que ce que j’écrirai sera utile à quelqu'un et qu’il me permettra de gagner suffisamment de réputation pour commenter la prochaine fois.