第十章:使用进程、线程和协程提供并发性-threading:进程中管理并发操作-控制资源访问-锁作为上下文管理器

10.3.8.2 锁作为上下文管理器
锁实现了上下文管理器API,并与with语句兼容。使用with则不再需要显式地获得和释放锁。

import threading
import logging

def worker_with(lock):
    with lock:
        logging.debug('Lock acquire via with')

def worker_no_with(lock):
    lock.acquire()
    try:
        logging.debug('Lock acquire directly')
    finally:
        lock.release()


logging.basicConfig(
    level=logging.DEBUG,
    format='(%(threadName)-10s) %(message)s',
    )

lock = threading.Lock()
w = threading.Thread(target=worker_with,args=(lock,))
nw = threading.Thread(target=worker_no_with,args=(lock,))

w.start()
nw.start()

函数worker_with()和worker_no_with()用等价的方式管理锁。
运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43193719/article/details/89643822