Python多线程和线程锁测试

本文通过两个具体示例展示了Python中使用线程锁(threading.Lock)来同步线程的方法。第一个示例中,一个线程在获取锁后执行特定任务,而另一个线程不受锁的影响。第二个示例则演示了两个线程如何竞争同一把锁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试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次事情

转载于:https://my.oschina.net/tangzhichao/blog/781622

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值