Domanda

Ci scusiamo per la questione principiante, ma non posso figura fuori Cprofile (sono veramente nuovo a Python)

I può essere eseguito tramite il terminale con:

python -m cProfile myscript.py

Ma ho bisogno di farlo funzionare su un server web, quindi mi piacerebbe di mettere il comando all'interno dello script sarà guardare. Come faccio a fare questo? Ho visto cose usando termini come __init__ and __main__ ma io davvero non capisco che cosa quelli sono.

So che questo è semplice, sto solo ancora cercando di imparare tutto e so che c'è qualcuno che lo sanno.

Grazie in anticipo! L'apprezzo.

È stato utile?

Soluzione

Credo che tu hai visto idee come questa:

if __name__ == "__main__":
    # do something if this script is invoked
    # as python scriptname. Otherwise, gets ignored.

Quello che succede è quando si chiama pitone su uno script, che file ha un __name__ set di attributi per "__main__" se è il file che viene chiamato direttamente l'eseguibile pitone. In caso contrario, (se non viene chiamato direttamente) è importato.

Ora, è possibile utilizzare questo trucco sui vostri script se è necessario, ad esempio, supponendo che si hanno:

def somescriptfunc():
    # does something
    pass


if __name__ == "__main__":
    # do something if this script is invoked
    # as python scriptname. Otherwise, gets ignored.

    import cProfile
    cProfile.run('somescriptfunc()')

Questo cambia lo script. Quando importate, le sue funzioni di membro, le classi, ecc possono essere utilizzati come normali. Quando run dalla riga di comando, si profili.

E 'questo quello che stai cercando?


Dai commenti che ho raccolto più è forse necessario, quindi ecco qui:

Se si sta eseguendo uno script da cambiamenti CGI sono che è della forma:

# do some stuff to extract the parameters
# do something with the parameters
# return the response.

Quando dico fuori astratto, si può fare questo:

def do_something_with_parameters(param1, param2):
    pass

if __name__ = "__main__":
    import cProfile
    cProfile.run('do_something_with_parameters(param1=\'sometestvalue\')')

Inserire il file sul vostro cammino pitone. Quando viene eseguito in sé, sarà il profilo della funzione che si desidera profiling.

Ora, per lo script CGI, creare uno script che fa:

import {insert name of script from above here}

# do something to determine parameter values
# do something with them *via the function*:
do_something_with_parameters(param1=..., param2=...)
# return something

Quindi, lo script CGI diventa solo un po 'di wrapper per la funzione (che è in ogni caso) e la vostra funzione è ora di auto-test.

E 'possibile quindi il profilo della funzione utilizzando i valori costituiti sul desktop, dal server di produzione.

Ci sono probabilmente più ordinato modi per raggiungere questo obiettivo, ma che avrebbe funzionato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top