import threading lock = threading.Lock() def add(): global num lock.acquire() num += 1 lock.release() def sub(): global num lock.acquire() num -= 1 lock.release() for i in range(1000): num = 0 t1 = threading.Thread(target=add, ) t2 = threading.Thread(target=sub, ) t1.start() t2.start() t1.join() t2.join() print(num)