测试1
代码:
#coding=utf-8
import threading
from time import sleep
threadLock = threading.Lock()
def handle1(name,count):
getlock=threadLock.acquire()
print str(name)+"获取锁成功?"+str(getlock)
for i in range(count):
print str(name)+"处理了"+str(i+1)+"次事情"
sleep(1)
threadLock.release()
def handle2(name):
for i in range(10):
print str(name)+"处理了"+str(i+1)+"次事情"
sleep(1)
threading.Thread(target=handle1,args=["张三",5]).start()
threading.Thread(target=handle2,args=('李四',)).start()
print "main thread end"
打印:
张三获取锁成功?True
张三处理了1次事情
main thread end
李四处理了1次事情
张三处理了2次事情
李四处理了2次事情
李四处理了3次事情
张三处理了3次事情
李四处理了4次事情
张三处理了4次事情
李四处理了5次事情
张三处理了5次事情
李四处理了6次事情
李四处理了7次事情
李四处理了8次事情
李四处理了9次事情
李四处理了10次事情
测试2
代码:
#coding=utf-8
import threading
from time import sleep
threadLock = threading.Lock()
def handle1(name,count):
getlock=threadLock.acquire()
print str(name)+"获取锁成功?"+str(getlock)
for i in range(count):
print str(name)+"处理了"+str(i+1)+"次事情"
sleep(1)
threadLock.release()
def handle2(name):
getlock=threadLock.acquire()
print str(name)+"获取锁成功?:"+str(getlock)
for i in range(10):
print str(name)+"处理了"+str(i+1)+"次事情"
sleep(1)
threadLock.release()
threading.Thread(target=handle1,args=["张三",5]).start()
threading.Thread(target=handle2,args=('李四',)).start()
print "\n main thread end"
打印:
张三获取锁成功?True
张三处理了1次事情
main thread end
张三处理了2次事情
张三处理了3次事情
张三处理了4次事情
张三处理了5次事情
李四获取锁成功?:True
李四处理了1次事情
李四处理了2次事情
李四处理了3次事情
李四处理了4次事情
李四处理了5次事情
李四处理了6次事情
李四处理了7次事情
李四处理了8次事情
李四处理了9次事情
李四处理了10次事情
本文通过两个具体示例展示了Python中使用线程锁(threading.Lock)来同步线程的方法。第一个示例中,一个线程在获取锁后执行特定任务,而另一个线程不受锁的影响。第二个示例则演示了两个线程如何竞争同一把锁。
1837

被折叠的 条评论
为什么被折叠?



