flask的线程隔离
线程隔离的原理就是通过字典保存数据,每一个线程都将自己的线程号作为key,request请求对象的返回值作为value
werkzeug库里面的local模块封装了一个Local对象,基于字典实现的线程隔离对象
import threading import time from werkzeug.local import Local obj = Local() obj.b = 1 def worker_1(): obj.b = 2 print('Current thread b is:' + str(obj.b)) new_task = threading.Thread(target=worker_1) new_task.start() time.sleep(1) print('Main thread b is:' + str(obj.b))
输出结果:
Current thread b is:2 Main thread b is:1
不用在意它是如何封装成一个线程隔离对象的细节,直接就可以使用
使用线程隔离的意义:
使用当前线程能够正确引用到他自己所创建的对象,而不是引用到其他线程创建的对象