Python Threading. Как мне заблокировать тему?

Я пытаюсь понять основы многопоточности и параллелизма. Я хочу простой случай, когда два потока неоднократно пытаются получить доступ к одному общему ресурсу.

Код:

<code>import threading

class Thread(threading.Thread):
    def __init__(self, t, *args):
        threading.Thread.__init__(self, target=t, args=args)
        self.start()
count = 0
lock = threading.Lock()

def incre():
    global count 
    lock.acquire()
    try:
        count += 1    
    finally:
        lock.release()

def bye():
    while True:
        incre()

def hello_there():
    while True:
        incre()

def main():    
    hello = Thread(hello_there)
    goodbye = Thread(bye)

    while True:
        print count

if __name__ == '__main__':
    main()
</code>

Итак, у меня есть два потока, оба пытаются увеличить счетчик. Я думал, что если нить 'A'; называетсяincre(),lock будет установлен, предотвращая "B"; от доступа до «A»; выпустил.

Запуск дает понять, что это не так. Вы получаете все случайные приращения данных.

Как именно используется объект блокировки?

Изменить. Кроме того, я пытался установить блокировки внутри потоковых функций, но все равно не повезло.

Ответы на вопрос(1)

Ваш ответ на вопрос