python多线程互锁

import threading

g_num = 0

def test1(num):
    global g_num
    for i in range(num):
        g_num += 1
        print(g_num)
    print("---test1---g_num=%d"%g_num)

def test2(num):
    global g_num
    for i in range(num):
        g_num += 1
        print(g_num)
    print("---test2---g_num=%d"%g_num)


# 创建2个线程,让他们各自对g_num加1000000次
p1 = threading.Thread(target=test1, args=(10000,))
p1.start()

p2 = threading.Thread(target=test2, args=(10000,))
p2.start()
p1.join()
p2.join()

print("2个线程对同一个全局变量操作之后的最终结果是:%s" % g_num)

结果都是正确的,但是我去掉了每个循环中的print,结果就有问题了。我想知道这是为什么。本来是为了学习threading.Lock()的,结果发现没上锁结果也没问题。

这是执行速度太快了,没时间延迟的,你每个线程加个sleep就知道了