Interactive Python: impossible d'obtenir la `%lprun " à travailler, bien que line_profiler est importé correctement
Problème
Plus iPython "fonctions magiques" beau travail pour moi dès le départ: %hist
, %time
, %prun
, etc. Cependant, j'ai remarqué que %lprun
n'a pas pu être trouvé avec iPython comme je l'avais installé à l'origine.
Tenter de Résoudre
Puis, j'ai découvert que je devrais installer le line_profiler
module. J'ai installé ce module, mais encore ne peut pas sembler obtenir la fonction magique pour fonctionner correctement. Si je tente d'appeler %lprun
, iPython ne trouvez toujours pas la fonction. Si je l'appelle par le nom complet ( line_profiler.magic_lprun
), la fonction peut être trouvé, mais je ne peut pas le faire fonctionner à tous. Ci-dessous est un exemple de ce que j'avais fait (ce qui est guidé étape par étape à partir de "Python pour l'Analyse des Données" livre):
Succès À L'Aide De %prun
[Dans:]
def add_and_sum(x, y):
added = x + y
summed = added.sum(axis=1)
return summed
x = randn(3000, 3000)
y = randn(3000, 3000)
add_and_sum(x, y)
Avec cela je reçois une belle réponse, comme prévu:
[Out:]
array([-23.6223074 , -10.08590736, -31.2957222 , ..., -14.17271747,
63.84057725, -50.28469621])
Et je peux faire le profilage fonction magique %prun
:
[Dans:]
%prun add_and_sum(x, y)
[Out:]
6 function calls in 0.042 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.020 0.020 0.029 0.029 <ipython-input-27-19f64f63ba0a>:1(add_and_sum)
1 0.013 0.013 0.042 0.042 <string>:1(<module>)
1 0.009 0.009 0.009 0.009 {method 'reduce' of 'numpy.ufunc' objects}
1 0.000 0.000 0.009 0.009 _methods.py:16(_sum)
1 0.000 0.000 0.009 0.009 {method 'sum' of 'numpy.ndarray' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
Échouer À L'Aide De %lprun
Mais quand j'essaie %lprun
, je ne peux pas obtenir quoi que ce soit:
[Dans:]
%lprun -f add_and_sum add_and_sum(x, y)
[Out:]
ERROR: Line magic function `%lprun` not found.
Et si j'essaie d'appeler la fonction avec son nom standard, il n'y a pas de travail:
[Dans:]
line_profiler.magic_lprun -f add_and_sum.test test.add_and_sum(x, y)
[Out:]
line_profiler.magic_lprun -f add_and_sum.test test.add_and_sum(x, y)
^
SyntaxError: invalid syntax
Mais la bibliothèque a été importés correctement, ou du moins c'est ce qu'il dit:
[Dans:]
line_profiler
[Out:]
<module 'line_profiler' from '/Users/<edit>/anaconda/lib/python2.7/site-packages/line_profiler-1.0b3-py2.7-macosx-10.5-x86_64.egg/line_profiler.pyc'>
[Dans:]
line_profiler.magic_lprun
[Out:]
<function line_profiler.magic_lprun>
Il me semble que si il ya quelque chose en plus que je suis censé pour configurer de sorte que ces nouvelles fonctions magiques que j'ajoute peut être identifié comme tel. Je ne pouvais pas trouver quoi que ce soit via une recherche sur le web.
Je suis en cours d'exécution Spyder comme un IDE (toujours à l'aide de iPython comme la console), mais j'ai aussi essayé directement avec iPython et avec iPython notebook. J'ai pas eu de chance dans n'importe quel format.
Vous devez vous connecter pour publier un commentaire.
Vous avez deux façons de faire le travail
%lprun
, une seule solution n'est que temporel, c'est à dire, il dure jusqu'à la fin de votreipython
session, et l'autre est permanent.Temporelle: (comme Carlos Cordoba réponse)
Après le démarrage de
ipython
exécutez la commande suivante:Permanente:
Ajoutez les lignes suivantes à
~/.ipython/profile_default/ipython_config.py
:Si vous n'avez pas le fichier
~/.ipython/profile_default/ipython_config.py
, vous pouvez le créer par (voir cette pour plus d'infos):De faire
%lprun
de travail, vous devez charger l'extension dans votre session, à l'aide de cette commande:Découvrez ce portable pour voir quelques exemples d'utilisation de la magie.
En outre, si vous travaillez avec Spyder, il y a aussi un tiers
line_profiler
plugin, que vous pouvez trouver ici.line_profiler
plugin si vous utilisez Spyder. Je trouve que c'est la moins gênante pour exécuterline_profiler
et la puissance qu'il donne, c'est agréable.line_profiler
extension n'a pas été mis à jour pour fonctionner avec IPython 5.0. Merci de voir github.com/rkern/line_profiler/pull/65 pour un correctif%load_ext line_profiler
commande fonctionne dans IPython 5.0 avec line_profiler la version 2.0.