zoukankan      html  css  js  c++  java
  • Python中的threadlocal

    在多线程中,对于共有的共享数据的操作,需要加锁

    但是,对于局部变量,则在每个线程之间相互独立

    假如线程T想要把函数F1中的局部变量V1传到函数F2中去,F2再想把这个变量传到F3中去,一层一层地传较为繁琐

    将Python的threading.local()返回的对象命名为tl,将tl放在全局的位置,可在各个函数中为tl绑定属性

    可以把tl视作一个字典,key值为线程id,value为一个字典,value代表的这个字典中包含我们绑定的属性。

    这里有个问题是,如果线程T1知道了线程T2的id,那么岂不是能在线程T1中修改线程T2的数据吗?这牵扯到一个线程隔离的问题。

    实际的threading.local()处理了这种情况,原理在稍后研究。

    这样当多线程执行的时候,通过使用threading.local(),对于每个线程,可以在任何地方方便地存取自己线程对应的数据,

    各个线程相互隔离,不会互相干扰。

  • 相关阅读:
    sql增删改查-转载
    委托和事件 链接
    三层架构-转载
    ToList()方法
    Invoke--转载
    C# 6.0新特性---语法糖
    索引器
    HBase学习总结(1)
    教程-关于Owner和Parent的区别
    问题-在TreeView使用时,发现选中的树节点会闪烁或消失
  • 原文地址:https://www.cnblogs.com/geeklove01/p/8157668.html
Copyright © 2011-2022 走看看