from threading import Thread, Lock

var = 0
# We add a lock that ensures only one thread is modifying the variable at the
# same time
lock = Lock()

def inc_var():
    """Increment the global var"""
    global var
    lock.acquire()
    var += 1
    lock.release()

def dec_var():
    """Decrement the global var"""
    global var
    lock.acquire()
    var -= 1
    lock.release()

def inc_thread():
    global var
    for _ in range (100000):
        inc_var()

def dec_thread():
    global var
    for _ in range (100000):
        dec_var()

def main():
    global var
    t1 = Thread (target = inc_thread)
    t2 = Thread (target = dec_thread)
    t1.start ()
    t2.start ()
    t1.join ()  # wait for the thread to finish
    t2.join ()
    print (var)


if __name__ == '__main__':
    main()
