何鑫思想是:
decorator是多线程安全的
看如下代码, 思想就是
让线程A进入decorator并loop, 首先打印pause
让线程B进入decorator, 如果打印, 证明是线程安全的
import multiprocessing import threading import time import os def decorator(func): def _inner(*args, **kwargs): while args[0].status == 0: print threading.current_thread().ident, 'pause' time.sleep(5) func(*args, **kwargs) return _inner class A(threading.Thread): def __init__(self): super(A, self).__init__() self.status = 1 def pause(self): self.status = 0 print threading.current_thread().ident, 'receive pause' def recover_form_pause(self): self.status = 1 def run(self): print threading.current_thread().ident, 'start' time.sleep(1) self.func1() @decorator def func1(self): print threading.current_thread().ident, 'func1' time.sleep(1) self.func2() @decorator def func2(self): print threading.current_thread().ident, 'func2' time.sleep(1) self.func3() @decorator def func3(self): print threading.current_thread().ident, 'func3' self.func1() time.sleep(1) if __name__ == '__main__': print 'main thread', threading.current_thread().ident p1 = A() p1.start() p1.pause() time.sleep(2) p2 = A() p2.start() p2.pause() # p1.recover_form_pause() # p2.recover_form_pause()