我已使用它们进行同步。
import functools
def synchronized(lock):
    """ Synchronization decorator """
    def wrap(f):
        @functools.wraps(f)
        def newFunction(*args, **kw):
            lock.acquire()
            try:
                return f(*args, **kw)
            finally:
                lock.release()
        return newFunction
    return wrap
正如评论中指出的那样,从Python 2.5开始,您可以将with语句与threading.Lock(或multiprocessing.Lock从2.6版本开始)对象结合使用,   以将装饰器的实现简化为:
import functools
def synchronized(lock):
    """ Synchronization decorator """
    def wrap(f):
        @functools.wraps(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()放在函数调用的任一侧。