Hi, On Monday 31 March 2003 11:54, Harald Armin Massa wrote:
1.) die Liste der URLs in eine Queue stellen
Queue hat gegenüber "kleine_Array+Semaphoren" den Nachteil dass sie umne Größenordnung lahmer ist (war jedenfalls so das letzte Mal als ich das getestet habe).
import Queue urlq=Queue.Queue() Hier kann man praktischerweise eine maxsize definieren.
for element in urlListe: urlq.put(element)
class Worker(Thread): meineURL=urlq.get_nowait() if meineURL is None: break 3.) ein Rudel Arbeitsthreads erzeugen & starten
Wie gesagt -- die ganze Liste füllen und dann erst die Threads starten ist spätestens bei vielen URLs oder nichttrivialer URL-Generierung kontraproduktiv. (Die urlliste ist bei mir im Übrigen grundsätzlich ein Iterator. ;-) Wenn du ohne nowait arbeitest, brauchst du natürlich einen Stop-Marker. Das geht bei Queue aber genauso wie bei simpler Array.
Kannst sogar die Queue nach und nach befüllen, solange sie nicht leer ist, laufen die Threads weiter.
Das würde ich nicht tun... solche Programmier-Abkürzungen tendieren dazu, früher oder später gewaltig in die Hose zu gehen. -- Matthias Urlichs -- Die Liebe will 1 Menschen; die Wollust alle Menschen; nur hat diese dann nicht genug; jene aber an 1 die Unendlichkeit. -- Jean Paul