Ladezeiten bei urllib messen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dann gibt es zwei Möglichkeiten: Python 2.5 nehmen oder MySQLdb-Quellen runterladen, MySQL herunterladen (und hoffen dass die Include-Dateien dabei sind) und einen Compiler herunterladen (Visual C++ Express sollte reichen, oder MinGW. Je nach Software ist der eine oder der andere Compiler brauchbarer).bankkind hat geschrieben:Weil für mich, der das noch nicht gemacht hat, ist das gefrickel und mir fehlt da leider eine vernünftige Anleitung.
Wenn du das hast machst du im MySQLdb-Ordner ein ``python setup.py build_ext`` und korrigierst solange an den Sachen rum (fehlende Include-Dateien etc) bis es dann kompiliert. Ich kann dir da auch keine genaue Anleitung geben, weil die genauen Schritte immer etwas unterschiedlich sind, je nach Compiler und Software die man kompilieren will.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo Leonidas
In der Doku zu 'timeit'
http://docs.python.org/dev/library/timeit
sind weiter unten Beispiele vorhanden. Weisst du was beim folgenden Code-Schnippsel genau abläuft:
Bei mir wird der Printbefehl:
nie ausgeführt oder es dauert eine Ewigkeit bis dies der Fall sein wird?
Gruss wuf
In der Doku zu 'timeit'
http://docs.python.org/dev/library/timeit
sind weiter unten Beispiele vorhanden. Weisst du was beim folgenden Code-Schnippsel genau abläuft:
Code: Alles auswählen
def test():
"Stupid test function"
L = []
for i in range(100):
L.append(i)
if __name__=='__main__':
from timeit import Timer
t = Timer("test()", "from __main__ import test")
print t.timeit()
Code: Alles auswählen
print t.timeit()
Gruss wuf
Take it easy Mates!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Doch, der wird ausgeführt, nur muss der Code erstmal 1000000 durchlaufen werden, was schon ziemlich lange dauert. Das kannst du ausprobieren indem du dem Aufruf ``number=1`` als Argument mitgibst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Die scheinbare Genauigkeit ist die, die die Timerfunktion des Systems ausspuckt. Wie genau die Zeitmessung wirklich ist -- auf deinem System, mit entsprechenden Hintergrundprozessen und I/O-Last, kannst du am besten feststellen, indem du ein bekanntes Snippet einige Male durchlaufen lässt und die Standardabweichung bestimmst.wuf hat geschrieben:Kann eine Zeitmessung mittels 'timeit' als genau bezeichnet werden da scheinbar mit Nanosekunden-Auflösung gemessen wird?
-
- User
- Beiträge: 106
- Registriert: Freitag 14. September 2007, 23:02
- Wohnort: Teltow
- Kontaktdaten:
Habe mich jetzt für das Python-Downgrade entschieden und es funktioniert. Werde ggf. nochmal versuchen in einer VM mir das mit 2.6 zusammen zufrickeln... aber momentan habe ich keine lustLeonidas hat geschrieben:Dann gibt es zwei Möglichkeiten: Python 2.5 nehmen oder MySQLdb-Quellen runterladen, MySQL herunterladen (und hoffen dass die Include-Dateien dabei sind) und einen Compiler herunterladen (Visual C++ Express sollte reichen, oder MinGW. Je nach Software ist der eine oder der andere Compiler brauchbarer).bankkind hat geschrieben:Weil für mich, der das noch nicht gemacht hat, ist das gefrickel und mir fehlt da leider eine vernünftige Anleitung.
Wenn du das hast machst du im MySQLdb-Ordner ein ``python setup.py build_ext`` und korrigierst solange an den Sachen rum (fehlende Include-Dateien etc) bis es dann kompiliert. Ich kann dir da auch keine genaue Anleitung geben, weil die genauen Schritte immer etwas unterschiedlich sind, je nach Compiler und Software die man kompilieren will.
-
- User
- Beiträge: 106
- Registriert: Freitag 14. September 2007, 23:02
- Wohnort: Teltow
- Kontaktdaten:
Code: Alles auswählen
import urllib
import time
url = ('http://www.ebay.de',
'http://www.google.de',
'http://www.wikipedia.de')
for a in url:
start = time.clock()
a = urllib.urlopen(url)
ende = time.clock()
result = a + ':%1.2f Sekunden' % (ende - start)
print result
Schau dir mal genau an was du in Zeile 10 machst. Du gibst das tupel als solches bei urlib an und überschreibst mit dem Ergebnis a. Du willst aber eigentlich a als argument von urlopen (und dieses dann auch einem anderen Namen als url zuweisen - sonst würdest du dein tupel mit Adressen überschreiben).
Klarer Fall von schechten Variablennamen...
Klarer Fall von schechten Variablennamen...
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Nein, klarer Fall von selbst in den Fuß geschossenHerrHagen hat geschrieben:Klarer Fall von schechten Variablennamen...
Bei Zeile 12 dürfte es nochmal krachen, bzw die Ausgabe ist nicht das was du haben willst, aber auch hier hilft dir HerrHagens Post.
-
- User
- Beiträge: 106
- Registriert: Freitag 14. September 2007, 23:02
- Wohnort: Teltow
- Kontaktdaten:
So... Wenn ich jetzt noch wüsste wie ich ein TimeOut realisieren könnte...
Ich dachte an diesen Ansatz... das passt jetz zwar nicht, aber ich dachte mir ungefähr so müsste ich es umsetzen. Jemand eine andere Idee?
Code: Alles auswählen
start = time.clock()
urllib.urlopen(a)
if (ende - start) > 5:
print 'TimeOut'
ende = time.clock()