Pregunta

Lo siento por la pregunta principiante, pero no puedo averiguar cprofile (soy muy nuevo en Python)

se puede ejecutar a través de mi terminal con:

python -m cProfile myscript.py

Pero necesito para ejecutarlo en un servidor web, por lo que me gustaría poner el mando dentro de la secuencia de comandos que se verá en. ¿Cómo puedo hacer esto? He visto cosas utilizando términos como __init__ and __main__ pero realmente no entienden lo que son.

Sé que esto es simple, sólo estoy todavía tratando de aprender todo y sé que hay alguien que va a saber esto.

Gracias de antemano! Lo aprecio.

¿Fue útil?

Solución

creo que ha estado viendo ideas como la siguiente:

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

Lo que pasa es cuando se llama pitón en un script, el archivo tiene un conjunto de atributos a __name__ "__main__" si es el archivo que se llama directamente por el ejecutable pitón. De lo contrario, (si no se llama directamente) se importa.

Ahora, usted puede utilizar este truco en las secuencias de comandos si es necesario, por ejemplo, suponiendo que tiene:

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()')

Esto cambia la secuencia de comandos. Cuando se importan, sus funciones miembro, clases, etc se pueden utilizar de forma normal. Cuando Ejecutar desde la línea de comandos, se perfila.

Es esto lo que está buscando?


A partir de los comentarios que he reunido más es tal vez sea necesario, así que aquí va:

Si está ejecutando un script CGI de los cambios son que es de la forma:

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

Cuando digo en abstracto, se puede hacer esto:

def do_something_with_parameters(param1, param2):
    pass

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

Ponga ese archivo en su camino pitón. Cuando funcionar por sí mismo, que incluirá una reseña de la función que desea perfilar.

Ahora, para su script CGI, crear un script que hace:

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

Así que la secuencia de comandos CGI sólo se convierte en un pequeño contenedor para su función (que es de todos modos) y su función actual es la auto-prueba.

A continuación, se puede perfilar la función utilizando compuestos por los valores de su escritorio, lejos del servidor de producción.

Probablemente hay más ordenado maneras de lograr esto, pero trabajaría.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top