Mein Ziel: Ich will URL aus einer DB holen und der Reihe nach abarbeiten. Da eine Verbindung zur gleichen Zeit verschwendung wäre, da ja massig Zeit aufgrund der Requests, Daten übertragen usw. drauf geht muss also mehree Threads her. Ich bin wahrscheinlich auch nicht der erste mit dieser Problemstellung.
Bevor ich mich dadran wagen wollte hab ich einige Experimente gemacht und schon da kann ich mir einiges nicht erklären.
Code: Alles auswählen
import Queue
import time
import random
import thread
def worker(name):
wzeit = random.randint(1,300)/100.0
time.sleep(wzeit)
print name,'wartezeit:'+str(wzeit)
for i in ['Hans','Dieter','Klaus','Bert','Lisa','Paul']: #Lisa ist nur dabei, damit die Frauenquote stimmt o.0
thread.start_new_thread(worker,(i,))
time.sleep(5)
Auf in die Nächste Runde, diesmal sollen nur 2 Threads gleichzeitig laufen.
Code: Alles auswählen
import Queue
import time
import random
import thread
import threading
#Wir legen das "Wartezimmer" mit 2 Sitzplätzen an
schlange = Queue.Queue(2)
#Wir legen fest, was der Thread überhaupt machen soll
def worker(name):
#soleneg noch was im "Wartezimmer" ist soll ein Thread gestartet werden und seine Arbeit machen
if schlange.qsize()!=0:
thread.start_new_thread(worker,(schlange.get(),))
wzeit = random.randint(1,300)/100.0
time.sleep(wzeit)
print name,'wartezeit:'+str(wzeit),'Elemente in schlange:',schlange.qsize()
#Das "Wartezimmer" wird gefüllt und der Rest muss draußen bleiben, auch die Privatversicherten
for i in ['Hans','Dieter','Klaus','Bert','Lisa','Paul']:
#Wir packen Elemente ins Wartezimmer, der Rest wird, wenn ich die
#http://docs.python.org/lib/QueueObjects.html
#richtig verstehe, geblockt (bleibt vor der Tür) bis wieder Platz ist.
schlange.put(i)
thread.start_new_thread(worker,(schlange.get(),))
time.sleep(5)
Kann mir da jemand ein wenig helfen, soll ich womöglich lieber gelich mit Klassen und dem "großen" Threads Modul arbeiten? Wär nett, wenn mir jemand einen simplen Beispieltcode schreiben könnte, muss ja nichts grosses sein. Bin für jede Hilfe dankbar.