Для задания я должен создать простую многопоточную программу, в которой есть три потока, которые ожидают случайное количество времени (от 0,1 до 2 секунд) и затем выводят «конец». Я пытаюсь использовать блокировки, чтобы предотвратить неправильное переключение выходных данных, но мой вывод все еще выглядит случайным (то есть блокировки не работают должным образом). Мой код:
import time
from threading import *
import random
lock = Lock()
def one():
global lock
time.sleep((random.randint(1,20))/10)
lock.acquire()
print("1. end")
lock.release()
def two():
global lock
time.sleep((random.randint(1,20))/10)
lock.acquire()
print("2. end")
lock.release()
def three():
global lock
time.sleep((random.randint(1,20))/10)
lock.acquire()
print("3. end")
lock.release()
for i in range(0,100):
t1 = Thread(target = one)
t2 = Thread(target = two)
t3 = Thread(target = three)
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
, но мой вывод:
2. end
3. end
1. end
3. end
2. end
2. end
1. end
3. end
1. end
etc...
что я делаю не так?