美文网首页
Python的TLS机制中的threading.local()

Python的TLS机制中的threading.local()

作者: 云爬虫技术研究笔记 | 来源:发表于2019-03-22 23:32 被阅读0次

Python 裡有個 threading.local(),可以取得 thread-local storage (TLS),也就是每个线程 (thread) 特有的存储空间。

场景重现

最近使用了这个特性,在Thread的某个地方先设定了TLS的一个属性,在同Thread的另一个地方引用了它,结果去失败了,设定本应是成功的,但是为什么使用的时候却失败了,Why?

原因浅浅析

看了一些资料,发现是threading.local()每次产生出来的对象都是独立的,虽然在同一个Thread里面都取用同一份数据,但是这样的前提是必须使用同一个threading.local()

案例对比

我先产生一个threading.local()对象,在上面先设定一个属性X=1,取值也没问题。

>>> import threading
>>> tls1 = threading.local()
>>> tls1.x = 1
>>> tls1.x
1
>>> 

我们在这个时候在同一个Thread,再产生一个threading.local()对象,可以看出来,我们不能从这个新的对象中看到X属性。

>>> tls2 = threading.local()
>>> tls2.x
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    tls2.x
AttributeError: '_thread._local' object has no attribute 'x'
>>> 

结论

TLS机制可以看出,每个线程都有自己独立的TLS,并且只能通过唯一一个入口进入。

相关文章

  • Python的TLS机制中的threading.local()

    Python 裡有個 threading.local(),可以取得 thread-local storage (T...

  • 深入理解Python的TLS机制和Threading.local

    1.背景介绍 我之前写过一个关于Python的TLS机制的浅浅析,大家可以参考这个文章,首先,我们再来熟悉熟悉什么...

  • 加密基础知识三 TLS/SSL HTTPS

    参考SSL/TLS协议运行机制的概述图解SSL/TLS协议 一、作用 不使用SSL/TLS的HTTP通信,就是不加...

  • SSL/TLS协议简介

    阅读阮一峰博客《SSL/TLS协议运行机制的概述》和《图解SSL/TLS协议》摘录 作用 不使用SSL/TLS。 ...

  • SSL(安全套阶层)/TLS(传输层安全)

    SSL/TLS协议运行机制的概述图解SSL/TLS协议HTTPS背后的加密算法TLS协议分析 与 现代加密通信协议...

  • SSL/TLS 分析优秀文章

    SSL/TLS协议运行机制的概述 图解SSL/TLS协议 打造安全的App!iOS安全系列之 HTTPS iOS安...

  • [HTTP/HTTPS] 协议详解

    阮一峰老师已经写得很详细了: HTTP概述图解SSL/TLS协议HTTPS 升级指南SSL/TLS协议运行机制的概...

  • 网络知识梳理

    SSL/TLS协议运行机制的概述 不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三...

  • 关于SSL/TLS

    参考:SSL/TLS协议运行机制的概述 - 阮一峰的网络日志 参考:图解SSL/TLS协议 - 阮一峰的网络日志 ...

  • 说说SSL/TLS协议

    互联网的通信安全,建立在SSL/TLS之上 引自 阮一峰《SSL/TLS协议运行机制的概述》。 为什么使用SSL...

网友评论

      本文标题:Python的TLS机制中的threading.local()

      本文链接:https://www.haomeiwen.com/subject/bkodvqtx.html