cProfile und pstats

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wollte eben die Laufzeit etc. von einem Python-Programm messen, mittels cProfile.

Der Aufruf

Code: Alles auswählen

python -m cProfile meinProg.py
beschwert sich, dass `pstats` nicht importierbar ist:

Code: Alles auswählen

Traceback (most recent call last):
  File "/usr/lib/python2.6/runpy.py", line 122, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.6/runpy.py", line 34, in _run_code
    exec code in run_globals
  File "/usr/lib/python2.6/cProfile.py", line 190, in <module>
    main()
  File "/usr/lib/python2.6/cProfile.py", line 183, in main
    run('execfile(%r)' % (sys.argv[0],), options.outfile, options.sort)
  File "/usr/lib/python2.6/cProfile.py", line 36, in run
    result = prof.print_stats(sort)
  File "/usr/lib/python2.6/cProfile.py", line 80, in print_stats
    import pstats
ImportError: No module named pstats
Nach meinem Verständnis von dieser Seite ist das aber ein Standard-Modul. Manuelles Laden via `import ...` gibt den gleichen Fehler.

Python-Version ist 2.6.5 (Original aus Ubuntu 10.04).

Hat einer eine Idee, woran das liegt? Oder kennt einen alternativen Weg? Von Interesse ist die reine Laufzeit des Skripts "meinProg.py" (in Sekunden oder was auch immer).

Gruß, noisefloor
BlackJack

@noisefloor: Frag mich nicht was die Ubuntu-Leute dazu getrieben hat, aber das ist ein eigenes Paket: `python-profile` oder so ähnlich.

Wenn nur die Gesamtlaufzeit gefragt ist, könnte man auch einfach auf der Shell `time` verwenden. Die Bash hat den Befehl eingebaut, es gibt aber auch `/usr/bin/time` was einen anderen Funktionsumfang hat. Die reine Zeit können aber beide messen.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das Paket heisst `python-profiler` und das haben schon die Debian-Leute verbrochen. :evil:
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Und das "was die Leute dazu getrieben hat" ist auch ganz einfach: Das "profile"- und das "pstats"-Modul stehen unter anderer Lizenz als der Rest der Standard-Lib, und diese Lizenz lässt sich nicht mit den Debian Free Software Guidelines als frei vereinbaren (das "python-profile"-Paket ist deshalb auch in der "non-free"-Sektion zu finden).

Ich weiß also wirklich nicht, wie man von "verbrochen" reden kann.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
BlackJack

@Trundle: Bei dem Grund weiss ich nicht wie man da *nicht* von "verbrochen" reden kann. Ich sehe keine technische Begründung diesen Teil der Standardbibliothek "rauszurupfen". Hätten sie halt Python komplett in "non-free" packen sollen, wenn ihnen das nicht passt. :twisted:
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Und das "was die Leute dazu getrieben hat" ist auch ganz einfach: Das "profile"- und das "pstats"-Modul stehen unter anderer Lizenz als der Rest der Standard-Lib,
Ah - jetzt verstehe ich auch, warum auf der Seite in der Python Doku zuerst so ein komischer Lizenztext auftaucht. :-)

Der Profiler (Paket: python-profiler) ist in der Tat bei Ubuntu in "multiverse". Nach der Installation funktioniert es auf jeden Fall.

Danke & gelöst. :-)

Gruß, noisefloor
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:@Trundle: Bei dem Grund weiss ich nicht wie man da *nicht* von "verbrochen" reden kann. Ich sehe keine technische Begründung diesen Teil der Standardbibliothek "rauszurupfen". Hätten sie halt Python komplett in "non-free" packen sollen, wenn ihnen das nicht passt. :twisted:
Es ist keine technische Begründung sondern eine rechtliche. Wenn Python komplett in non-free wäre, dann müssten alle paketierten Module in contrib rein und damit wäre Python im Basissystem so ziemlich undenkbar.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@Leonidas: Das es keine technische Begründung ist, schrob ich ja selbst, es ist aber auch keine "rechtliche" sondern eine idiologische. Es wäre von Rechts wegen nicht verboten den Teil *nicht* von der Standardbibliothek zu separieren.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Es wäre aber dennoch falsch, für alle die in Debian main DFSG-konforme Software erwarten. Das ist ja der Sinn von main: wenn ich den Regeln der DFSG zustimme dann kann ich mir sicher sein, dass dort nur solche Software drin ist, brauche also nicht jede Lizenz eigens zu prüfen. Mir wärs auch lieber wenn die Module unter Python-Lizenz wären, aber bisher ist das eben noch nicht der Fall. Insofern ist es auch rechtlich, denn Lizenzen müssen ja rechtlich gültig sein und wenn die profiler-Lizenz nicht DFSG-kompatibel ist, dann enthält sie wohl Passagen die nicht unbedingt als "frei" (im Sinne von Debian, der sich stark mit dem deckt was viele FOSS-Leute als "frei" ansehen) eingestuft werden können, im rechtlichen "Rahmenwerk". Ohne dieses wäre alles Public Domain und die DFSG natürlich völlig unnötig.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Es mag nachvollziehbar sein, bleibt aber trotzdem eine idiologische Entscheidung. Kein Gesetz schreibt vor wie die Regelungen für Debian `main` auszusehen haben, noch das Python da reingehören muss.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

@BlackJack: Wenn man unter Ideologie die Summe der Zielvorstellungen versteht, hast du Recht. Wenn der Begriff "Ideologie" bzw. "ideologische Begründung" jedoch als Diskriminierung gegenüber "technisch notwendig" gemeint ist, dann hast du aus meiner Sicht unrecht. Wen es stört, dass Debian hier im Interesse seiner Nutzer auf die Feinheiten achtet, der muss es ja nicht verwenden.
Antworten