码迷,mamicode.com
首页 > 其他好文 > 详细

threading.local

时间:2019-09-01 18:36:57      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:内存   rgs   art   nbsp   _id   重复   star   值方法   str   

 

threading.local

 

基本概念:同一进程内的内存栈是全局的。

threading.local本质上是对全局字典对象管理类的一个封装,

内部自动为每个线程维护一个空间(字典),用于当前存取属于自己的值。保证线程之间的数据隔离。

主要的目的是线程之间的数据隔离。

当然,自己写也不是不可以,但开发的一个宗旨是不必重复造轮子。

案例源码:

import time
import threading

local = threading.local()

def func(n):
    print(threading.current_thread())
    local.val = n
    time.sleep(2)

    print(n)

for i in range(10):
    t = threading.Thread(target=func,args=(i,))
    t.start()

 

实质上local.val = n等效于local._local__impl.dicts[‘thread_id’][‘val’] = n

另外需要注意的是local类重写了取值方法。

 

threading.local

标签:内存   rgs   art   nbsp   _id   重复   star   值方法   str   

原文地址:https://www.cnblogs.com/wodeboke-y/p/11442859.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!