Python interactif: impossible d'obtenir` %lprun ' pour fonctionner, bien que le profileur de ligne soit importé correctement

Problème

la Plupart des iPython "fonctions magiques" beau travail pour moi juste au large de la chauve-souris: %hist,%time,%prun, etc. Cependant, j'ai remarqué que %lprun n'a pas pu être trouvé avec iPython car je l'avais installé à l'origine.

tentative de résolution

j'ai alors découvert que je doit installer le line_profiler module. J'ai installé ce module, mais je n'arrive toujours pas à faire fonctionner correctement la fonction magique. Si je tente de l'appeler %lprun, iPython ne peut toujours pas trouver la fonction. Si je l'appelle avec le nom complet (line_profiler.magic_lprun ), la fonction peut être trouvé, mais je ne peut pas le faire fonctionner. Voici un exemple de ce que j'ai fait (qui est repris pas à pas du livre "Python for Data Analysis"):

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:

[:]

array([-23.6223074 , -10.08590736, -31.2957222 , ..., -14.17271747,
    63.84057725, -50.28469621])

et je peux faire la fonction de magie de profilage %prun:

[Dans:]

%prun add_and_sum(x, y)

[:]

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}

Échec À 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)

[:]

ERROR: Line magic function `%lprun` not found.

Et si j'essaie d'appeler la fonction avec son nom standard, il ne fonctionne pas:

[Dans:]

line_profiler.magic_lprun -f add_and_sum.test test.add_and_sum(x, y)

[:]

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 au moins c'est ce qu'il dit:

[Dans:]

line_profiler

[:]

<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

[:]

<function line_profiler.magic_lprun>

il semble qu'il y ait quelque chose de plus que je suis censé configurer pour que ces nouvelles fonctions magiques que j'ajoute puissent être identifiées comme telles. Je n'ai rien trouvé via une recherche sur le web.

J'exécute Spyder comme un IDE( utilisant toujours iPython comme console), mais je l'ai aussi essayé directement avec iPython et avec IPython notebook. J'ai pas eu de chance dans n'importe quel format.

28
demandé sur Mike Williamson 2013-11-13 04:10:33

2 réponses

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 votre ipython session, et l'autre est permanent.

Temporelle: (comme Carlos Cordoba réponse)

Après le démarrage ipython exécuter la commande suivante:

In [1]: %load_ext line_profiler

Permanent:

Ajoutez les lignes suivantes ~/.ipython/profile_default/ipython_config.py:

c.TerminalIPythonApp.extensions = [
    'line_profiler',
]

Si vous n'avez pas le fichier ~/.ipython/profile_default/ipython_config.py, vous pouvez le créer par (voir pour plus d'infos):

ipython profile create
9
répondu lmiguelvargasf 2017-05-03 16:28:50

faire %lprun travailler, vous devez charger l'extension dans votre session, en utilisant cette commande:

In [1]: %load_ext line_profiler

découvrez ordinateur portable pour voir quelques exemples qui utilisent la magie.

en outre, si vous travaillez avec Spyder, il y a aussi un tiers line_profiler plugin, que vous pouvez trouver ici.

53
répondu Carlos Cordoba 2016-04-24 19:56:18