您的位置:首页 > 编程语言 > Python开发

python装饰实现线程同步

2015-10-24 17:11 573 查看
import threading

def tryfinally(finallyf):

u"returns a decorator that adds try/finally behavior with given no-argument call in the finally"

print "tryfinally"

def decorator(callable):

print "decorator"

def execute(*args, **kwargs):

print "execute1"

try: result = callable(*args, **kwargs)

finally: finallyf()

return result

return execute

return decorator

def usinglock(lock):

u"returns a decorator whose argument will acquire the given lock while executing"

print "usinglock"

def decorator(function):

print "decorator"

body = tryfinally(lock.release)(function)

def execute(*args, **kwargs):

print "execute"

lock.acquire()

return body(*args, **kwargs)

return execute

return decorator

def synchronized(function):

u"decorator; only one thread can enter the decorated function at a time; recursion is OK"

print "synchronized"

return usinglock(threading.RLock())(function)

@synchronized

def foo(*args):

print "Only one thread can enter this function at a time"

if __name__=="__main__":

foo(123)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: