Basic synchronization decorator,,下面代码是对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 wrapif __name__ == '__main__':    from threading import Thread, Lock    import time    myLock = Lock()    class MyThread(Thread):        def __init__(self, n):            Thread.__init__(self)            self.n = n        @synchronized(myLock)        def run(self):            """ Print out some stuff.            The method sleeps for a second each iteration.  If another thread            were running, it would execute then.            But since the only active threads are all synchronized on the same            lock, no other thread will run.            """            for i in range(5):                print 'Thread %d: Start %d...' % (self.n, i),                time.sleep(1)                print '...stop [%d].' % self.n    threads = [MyThread(i) for i in range(10)]    for t in threads:        t.start()    for t in threads:        t.join()

评论关闭