zoukankan      html  css  js  c++  java
  • python装饰实现线程同步

    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)

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    jquery 选择器总结
    jQuery 添加元素和删除元素
    jQuery 操作
    jquery 事件
    jQuery对象与DOM对象
    jquery 在页面中三种写法
    CSS3制作立体导航
    开发常用技巧之css字体编码
    c语言快速入门3
    c语言快速入门2
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4907195.html
Copyright © 2011-2022 走看看