Frage

Sorry für den Anfänger Frage, aber ich kann nicht herausfinden cProfile (Ich bin wirklich neu in Python)

Ich kann es über meinen Terminal laufe mit:

python -m cProfile myscript.py

Aber ich brauche es auf einem Webserver ausgeführt werden, so dass ich im Skript den Befehl möchten, setzen sie auf aussehen wird. Wie würde ich das tun? Ich habe Sachen gesehen Begriffe wie __init__ and __main__ mit, aber ich nicht wirklich verstehen, was diese sind.

Ich weiß, das einfach ist, bin ich nur noch alles versuchen zu lernen, und ich weiß, es ist jemand, der dies weiß.

Vielen Dank im Voraus! Ich schätze es.

War es hilfreich?

Lösung

Ich denke, man habe Ideen so zu sehen:

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

Was passiert, wenn Sie Python auf einem Skript aufrufen, die Datei ein Attribut __name__ Satz "__main__" hat, wenn sie die Datei direkt von der Python-Executable aufgerufen wird. Ansonsten (wenn es nicht direkt genannt wird) es importiert wird.

Jetzt können Sie diesen Trick auf Ihre Skripte verwenden, wenn Sie benötigen, zum Beispiel, vorausgesetzt, Sie haben:

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

Das ändert sich Ihr Skript. Wenn importiert, seine Mitgliedsfunktionen, etc Klassen können wie gewohnt verwendet werden. Wenn run von der Kommandozeile, es profiliert sich.

Ist das, was Sie suchen?


Aus den Kommentaren ich gesammelt habe vielleicht mehr benötigt wird, geht so hier:

Wenn Sie ein Skript von CGI Änderungen ausgeführt sind sie von der Form ist:

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

Als ich abstrahieren sagen, Sie können dies tun:

def do_something_with_parameters(param1, param2):
    pass

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

Setzen Sie die Datei auf Ihrem Python-Pfad. Wenn selbst ausführen, wird es die Funktion Profil Sie möchten Profilierungs.

Nun, für Ihren CGI-Skript, ein Skript erstellen, das tut:

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

Also Ihr CGI-Skript wird nur ein wenig Wrapper für Ihre Funktion (was es ist sowieso) und Ihre Funktion ist jetzt Selbsttests.

Sie können dann die Funktion Profil aus Werten auf Ihrem Desktop verwenden, weg von dem Produktionsserver.

Es gibt wahrscheinlich sauberere Wege, dies zu erreichen, aber es funktionieren würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top