1 import threading 2 import time 3 num=0 4 def Mylock(lock): 5 global num 6 lock.acquire() 7 num=num+1 8 time.sleep(1) 9 print num, 10 lock.release() 11 lock=threading.Lock() 12 for item in range(5): 13 t=threading.Thread(target=Mylock,args=(lock,)) 14 t.start() 15 1 2 3 4 5 16 #可以去掉lock,那么会发现输出为55555,这说明一个问题,当一个线程执行到time.sleep(1)时,其它线程开始计算num=num+1,极短的时间内五个线程全部都执行了num这句,然后大家一起等一秒后输出,所以结果都是5