python @修饰符_Python修饰符的一些常见用途是什么?

我用它们来同步。def synchronized(lock):

""" Synchronization decorator """

def wrap(f):

def newFunction(*args, **kw):

lock.acquire()

try:

return f(*args, **kw)

finally:

lock.release()

return newFunction

return wrap

正如注释中所指出的,由于Python2.5可以使用with语句与threading.Lock(或multiprocessing.Lock从2.6版开始,将装饰器的实现简化为:def synchronized(lock):

""" Synchronization decorator """

def wrap(f):

def newFunction(*args, **kw):

with lock:

return f(*args, **kw)

return newFunction

return wrap

不管怎么说,您可以这样使用它:import threading

lock = threading.Lock()

@synchronized(lock)

def do_something():

# etc

@synchronzied(lock)

def do_something_else():

# etc

基本上它只是lock.acquire()/lock.release()函数调用的任何一方。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值