14.with 的作用
大约 1 分钟学习笔记Python基础
1. with 的作用(自动获取和释放锁 Lock)
python 中with
的作用其实就是省去了 开启关闭的功能,比如使用 python 打开.txt 文件,需要先 open,最后读写完了,需要 close。
在线程中也是这样的,我们给资源加上锁 Lock,使用前需要
- 定义锁:
lock = threading.Lock()
- 启动
lock.acquire()
- 用完之后的释放
lock.release()
而是用 with lock
则省去了上面的内容,如下代码:
import threading
import time
num=0 # 全局变量多个线程可以读写,传递数据
mutex=threading.Lock() # 创建一个锁
class Mythread(threading.Thread):
def run(self):
global num
with mutex: # with Lock的作用相当于自动获取和释放锁(资源)
for i in range(1000000): # 锁定期间,其他线程不可以干活
num+=1
print(num)
mythread=[]
for i in range(5):
t=Mythread()
t.start()
mythread.append(t)
for t in mythread:
t.join()
print("game over")
'''
with mutex: #with表示自动打开自动释放锁
for i in range(1000000): #锁定期间,其他人不可以干活
num+=1
#上面的和下面的是等价的
if mutex.acquire(1):#锁住成功继续干活,没有锁住成功就一直等待,1代表独占
for i in range(1000000): #锁定期间,其他线程不可以干活
num+=1
mutex.release() #释放锁
'''