永发信息网

python threading local 判断值存不存在

答案:3  悬赏:70  手机版
解决时间 2021-02-05 10:21
python threading local 判断值存不存在
最佳答案
#coding=utf-8
import threading
# 创建全局ThreadLocal对象:
localVal = threading.local()
localVal.val = "Main-Thread"
def process_student():
print '%s (in %s)' % (localVal.val, threading.current_thread().name)
def process_thread(name):
#赋值
localVal.val = name
process_student()
t1 = threading.Thread(target= process_thread, args=('One',), name='Thread-A')
t2 = threading.Thread(target= process_thread, args=('Two',), name='Thread-B')
t1.start()
t2.start()
t1.join()
t2.join()
print localVal.val

打印结果:

One (in Thread-A)
Two (in Thread-B)
Main-Thread

threading.local()这个方法的特点用来保存一个全局变量,但是这个全局变量只有在当前线程才能访问,

localVal.val = name这条语句可以储存一个变量到当前线程,如果在另外一个线程里面再次对localVal.val进行赋值,

那么会在另外一个线程单独创建内存空间来存储,也就是说在不同的线程里面赋值 不会覆盖之前的值,因为每个

线程里面都有一个单独的空间来保存这个数据,而且这个数据是隔离的,其他线程无法访问

这个东西可以用在那些地方呢,比如下载,现在都是多线程下载了,就像酷狗那样,可以同时下载很多首歌曲,那么

就可以利用这个方法来保存每个下载线程的数据,比如下载进度,下载速度之类的

所以 如果你在开发多线程应用的时候 需要每个线程保存一个单独的数据供当前线程操作,可以考虑使用这个方法,简单有效

其实这样的功能还有很多种方法可以实现,比如我们在主线程实例化一个dict对象,然后用线程的名字作为key,因为线程之间可以共享数据,

所以也可以实现相同功能,并且灵活性更多,不过代码就没那么优雅简洁了
全部回答
hasattr(val, '属性名')
python通过两个标准库thread和threading提供对线程的支持。thread提供了低级别的、原始的线程以及一个简单的锁。threading模块不仅提供了thread类,还提供了各种同步机制
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
你好 我就是想问问民国四年的五元面值袁大头
尉庄中心校怎么去啊,我要去那办事
农机牌照车辆能买三者险吗
事必达汽车用品这个地址在什么地方,我要处理
凹凸镜凸凸镜的含义我像知道凹凸镜和凸凸镜的
研究生破格录取通过国家教育部批准?
胡家岭中心校地址在哪,我要去那里办事
镜影明诏什么意思
中国银行信用卡还款最小额度算不算余期
高分求一部有出现女生在厕所里拉肚子的镜头的
小唐摩托车电动车维修部地址在哪,我要去那里
宝马编程升级可以去除挂p档异响?
于家河中心校地址有知道的么?有点事想过去
win10语音助手怎样把圆圈换成长条 我家楼上的
建筑的阳面和阴面是指的哪两个方向呢?
推荐资讯
题目是计算1-3+5-7+9-11+.+97-99+101的结果#i
氢氧化钠粒能除油烟吗
对接焊缝与角焊缝连接各有何特点
海纳珍珠洪兴银饰东明加盟店地址在哪,我要去
爱你宝贝专业儿童摄影在哪里啊,我有事要去这
3道应用题,问题在补充栏中,要准确,1.小明:我
保定市市内能自习的地方有哪些?
怎样才能让使中性笔写出来的字不退色甚至永不
用200万人民币兑换韩元到韩国生活,好生活吗
【日照香炉生紫烟下一句】“日照香炉生紫烟”
地下城与勇士有了CE代码怎么用?
房子墙壁五进五出的垒法图片
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?