ich habe eine Verständnisfrage zum multi-threading. Ich habe folgendes Programm:
Code: Alles auswählen
import time
from threading import Thread
import random
d = []
def do(i):
time.sleep(random.random())
d.append(i)
for i in range(10):
t = Thread(target=do, args=(i,))
t.start()
t.join()
print(d)
Gut. Ich habe mein d ja nicht geschützt, also habe ich versucht, dies über eine lock zu machen:
Code: Alles auswählen
import time
from threading import Thread
import random
import threading
d = []
def do(i, l):
time.sleep(random.random())
l.acquire()
d.append(i)
l.release()
lock = threading.Lock()
for i in range(10):
t = Thread(target=do, args=(i,lock,))
t.start()
t.join()
print(d)
Mein Verständnis war, dass join die Ausführung meines Haupt-Threads so lange verzögert, bis alle Threads sich beendet haben und dann erst d ausgegeben wird. Irgendwo stimmt diese Überlegung offensichtlich nicht.
Über alle Hinweise bin ich dankbar.
blackno666
