Ladezeiten bei urllib messen

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.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

wuf hat geschrieben:Kann eine Zeitmessung mittels 'timeit' als genau bezeichnet werden da scheinbar mit Nanosekunden-Auflösung gemessen wird?
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.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Leonidas hat geschrieben:
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.
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).

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.
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 lust
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Ich muss das Thema nochmal aufgreifen. Wieso kann ich keine URL's aus einem Tupel verwenden bei URLopen? Welche Alternativen kann ich nutzen?
BlackJack

Was meinst Du mit "URL's (sic) aus einem Tupel"!?
bankkind
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
Sowas zum beispiel!
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

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... :wink:
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

HerrHagen hat geschrieben:Klarer Fall von schechten Variablennamen... :wink:
Nein, klarer Fall von selbst in den Fuß geschossen ;)
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.
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Ach verdammt... Ihr habt recht...

DANKE!
bankkind
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...

Code: Alles auswählen

start = time.clock()
urllib.urlopen(a)
if (ende - start) > 5:
   print 'TimeOut'
ende = time.clock()
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?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

``socket.settimeout()`` So wie du es denkst, kann es ja nicht funktionieren, da ``urlopen()`` blockiert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

JA sowas hatte ich mirbereits gedacht.

Aber: Wie kann ich socket mit urllib kombinieren?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

bankkind hat geschrieben:Aber: Wie kann ich socket mit urllib kombinieren?
``socket.settimeout()`` setzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

ich bekomms nicht hin...

Der greift nie!
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Wie muss ich denn socket Konfigurieren?
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Bei urllib2.urlopen kann timeout als Argument übergeben werden.
MfG
HWK
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Was ausser der Ladezeit kann man theoretisch noch von 'aussen' Monitoren'?

Fällt euch da noch was ein?
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Wiedermal ne Frage: Wie kann ich mir HTTP Statuscodes zurückgeben lassen, bei einem Aufruf? Ich möchte Fehler möglichst genau abfangen können.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ist schon einfach so zu finden

Code: Alles auswählen

import urllib2
x = urllib2.urlopen("http://python-forum.de/")
print dir(x)
print x.code
Antworten