码迷,mamicode.com
首页 > 编程语言 > 详细

线程锁-LOCK

时间:2020-03-22 01:27:05      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:color   join()   col   star   ase   时间   oba   port   数据   

from threading import Thread,Lock
import time
a=10
b=10
lock=Lock()
def fun():
# lock.acquire()
global a
global b
a+=1
time.sleep(1)
b+=1
# lock.release()
print("-a{}--b{}-->".format(a,b))

if __name__=="__main__":
start=time.time()
l=[]
for i in range(10):
t=Thread(target=fun)
l.append(t)
t.start()
for i in l:
i.join()
end=time.time()
print("end--------",end-start,a,b)

-a20--b11-->-a20--b12-->
-a20--b13-->

-a20--b14-->-a20--b15-->

-a20--b16-->
-a20--b17-->
-a20--b18-->
-a20--b19-->
-a20--b20-->
end-------- 1.003110408782959 20 20

由于线程间数据是共享的,多个线程共同操作一个对象,可能造成无法预期的结果。

如果把lock.acquire(),lock.release()取消注释

运行结果如下

-a11--b11-->
-a12--b12-->
-a13--b13-->
-a14--b14-->
-a15--b15-->
-a16--b16-->
-a17--b17-->
-a18--b18-->
-a19--b19-->
-a20--b20-->
end-------- 10.004825592041016 20 20

结果和预期的一样,但是时间也由1s变为10s了

线程锁-LOCK

标签:color   join()   col   star   ase   时间   oba   port   数据   

原文地址:https://www.cnblogs.com/pfeiliu/p/12543644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!