Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Dubbi sull'utilzzo di spyder-line-profiler

C
ColellaV (1040 points)
2 3 10
in Programmare in Python by (1.0k points)

Per usare le funzionalità di spyder-line-profiler è necessario aggiungere il decoratore @profile alla funzione che vogliamo profilare, però ogni volta che c'è bisogno di passare dal profiling al run vero e proprio (F5), bisogna ritogliere il decoratore perché "NameError: name 'profile' is not defined". Ho trovato vari workaround su internet ma non mi hanno aiutato

1.1k views
closed

4 Answers

Best answer
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
selected by

Il line-profiler aggiunge il "decoratore" profile alle funzioni di base. (un decoratore modifica il funzionamento della funzione definita subito dopo).
In particolare @profile si mette subito prima delle funzioni che ci interessano per registrarne le performance.
Quindi il line-profiler funziona solo se mettete @profile subito prima della vostra funzione.
Però se lasciate @profile nel codice i normali test non funzionano.
Un trucco è iniziare il file program01.py con le righe

if 'profile' not in __builtins__:
    print("installing dummy profile")
    def profile(x): return x

In questo modo se NON state usando il line-profiler verrà definita una funzione profile che non fa nulla alla funzione che segue.

Potrete lasciare i decoratori @profile nel codice.

Rametto (4910 points)
3 4 25
by (4.9k points)
Non conosco bene l'errore ma per eseguire i test prova ad aprire anaconda prompt ed eseguire questo comando "pytest test_01.py -v -rA
-x ", stando nella directory di questi file
C
ColellaV (1040 points)
2 3 10
by (1.0k points)

spyder-line-profiler non è collegato ad i test dell'esercizio, serve per misurare quanto tempo impiega ad eseguire ogni linea di codice

dolcetto_gommoso (2790 points)
4 6 18
by (2.8k points)

dovresti installare il plugin tramite il prompt anaconda con il codice: 

conda install spyder-line-profiler -c spyder-ide
C
ColellaV (1040 points)
2 3 10
by (1.0k points)
Lo so bene, la domanda riguarda un errore successivo.
n
nicosemp (630 points)
0 2 6
by (630 points)
hai risolto il mio problema grazie, non trovavo proprio come far funzionare il line profiler!

hai idea del perché vada specificato "-c spyder-ide"?
io avevo seguitola guida del prof mettendo "-c conda-forge".

cercando online ho capito che si tratta del "channel"... forse è come se spyder non lo vedesse a meno che non sia installato nel canale "spyder-ide"?
Loriv3 (7970 points)
13 21 84
by (8.0k points)
Ciao scusami per l'orario non so se possa andare bene ma prova ad aggiungere

import line_profiler

profile = line_profiler.LineProfiler()

Anche io ho avuto questo problema e ho risolto così potrebbe funzionare anche a te
C
ColellaV (1040 points)
2 3 10
by (1.0k points)
Se aggiungo quel codice non ho più errori ma il Line Profiler non dà più risultati purtroppo