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

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Problema con l'uso del decoratore @profile

raponi.federico (11280 points)
3 4 21
in Programmare in Python by (11.3k points)
recategorized by

Ho riscontrato il seguente un problema durante i test con il @proflie all'interno di Spyder. 

Una volta avviato il test Profile By Line da Spyder, le funzione decorate dal @profile compaiono nell'output, ma i tempi non vengono calcolati, infatti risulta che ogni funzione abbia impiegato 0.000ms.

Ho implementato il @profile in questo modo:

import builtins
if 'profile' not in dir(builtins):
    def profile(X) : return X
@profile    
def funzione():
465 views
closed

2 Answers

Best answer
Valerio Cucchiaro (1900 points)
1 2 9
by (1.9k points)
selected by
Il profiler non funziona se nella funzione    if __name__ == "main"__     non sono presenti i dati con la chiamata di funzione di cui hai bisogno.
raponi.federico (11280 points)
3 4 21
by (11.3k points)
Grazie mille, ho risolto, infatti nel mio main avevo messo pass.
G
Giordano_Dionisi (3100 points)
16 41 59
by (3.1k points)
Ma come lo hai implementato il profiler ? Perchè a me tornerebbe un botto utile, dato che non passo solo gli ultimi due tests per il timeout, ma proprio su Spyder nella finestra a destra non ho il pulsante "profile" considera

Non so se sai come aiutarmi
L
Lorenzo Spataro (2710 points)
0 0 12
by (2.7k points)

Installalo dal prompt di anaconda con il comando: 

conda install spyder-line-profiler -c spyder-ide

Se già lo avessi fatto, recati su spyder, in alto dove ci stanno i menu a tendina vai su View > Panes e spunta Line profiler, oppure puoi provare cliccando sul menu a tendina Run e poi sulla dicitura "Profile line by line", questo però è il Line Profiler che ti calcola i tempi per ogni riga dopo il decoratore @profile, se vuoi  Profile segui la procedura che ti ho descritto prima e spunti Profiler

G
Giordano_Dionisi (3100 points)
16 41 59
by (3.1k points)
Okay okay ora ci sto finalmente, calcola non so come ringraziarti !!

Era proprio questo che cercavo, con il profiler line - by - line !!!

Grazie ancora infinitamente !!!!
L
Lorenzo Spataro (2710 points)
0 0 12
by (2.7k points)
Ciao federico, hai fatto qualche chiamata a funzione() ? Ho avuto il tuo stesso problema e mi sono accorto che non avevo fatto nessuna call alla funzione per cui non mi calcolava i tempi delle linee
raponi.federico (11280 points)
3 4 21
by (11.3k points)
Esattamente, nel  if __name__ == "main"__  : avevo inserito pass e quindi non calcolava nessun tempo. Inserendo i dati forniti nell'esempio tutto funziona correttamente.