[Python-de] Threading

Harald Armin Massa ghum at gmx.net
Mon Mar 31 11:54:02 EST 2003


Lutz,

>Ich habe eine Liste mit ca. 4000 URLs, die ich gerne übertragenmöchte.
>Alle hintereinander dauert zu lange (drei Stunden), daher der Ansatz, mit
Threading 10 URLs >gleichzeitig abzuarbeiten.

1.) die Liste der URLs in eine Queue stellen

import Queue
urlq=Queue.Queue()
downloadfehler=Queue.Queue()
for element in urlListe:
    urlq.put(element)

2.) nen Arbetier definieren

from threading import Thread

class Worker(Thread):
    def run(self):
        global urlq
        while True:
            meineURL=urlq.get_nowait()
            # abfangen, wenn die Queue zwischenzeitlich von anderem Thread
gelert wurde
            if meineURL is None:
                break
            try::
                    .... #irgendwas wie wget meineURL
            except:
                downloadfehler.put(meineURL)

3.) ein Rudel Arbeitsthreads erzeugen & starten

for i in range(anzahldergewünschtenthreads):
    nixda=Worker()
    nixda.run()

>Ich habe bis jetzt aber noch keine Idee gehabt, wie ich durch die Liste
gehe und immer 10 >Threads am Laufen halte und am Ende dann auch merke, dass
ich durch bin.
Die Threads terminieren selbständig, wenn nix mehr in der Queue ist.
Kannst sogar die Queue nach und nach befüllen, solange sie nicht leer ist,
laufen die Threads weiter.

Gruß

Harald







More information about the Python-de mailing list