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

不用在意它是如何封装成一个线程隔离对象的细节,直接就可以使用

 

 

使用线程隔离的意义:

使用当前线程能够正确引用到他自己所创建的对象,而不是引用到其他线程创建的对象

 

posted @ 2021-12-02 21:24  安静ovo  阅读(47)  评论(0编辑  收藏  举报