zoukankan      html  css  js  c++  java
  • python 线程中的局部变量ThreadLocal

    一个线程使用自己的局部变量比使用全局变量好
    局部变量只有线程自己能看见,不会影响其他线程
    全局变量的修改必须加锁

    ThreadLocal 线程局部变量

    import threading

    # 创建全局ThreadLocal对象:
    local_school = threading.local()

    def process_student():
    # 获取当前线程关联的student:
    std = local_school.student
    print('Hello, %s (in %s)' % (std, threading.current_thread().name))

    def process_thread(name):
    # 绑定ThreadLocal的student:
    local_school.student = name
    process_student()


    t1 = threading.Thread(target= process_thread, args=('Alice',), name='Thread-A')
    t2 = threading.Thread(target= process_thread, args=('Bob',), name='Thread-B')
    t1.start()
    t2.start()
    t1.join()
    t2.join()

    执行结果:

    Hello, Alice (in Thread-A)
    Hello, Bob (in Thread-B)


    全局变量local_school就是一个ThreadLocal对象,
    每个Thread对它都可以读写student属性,但互不影响。

    可以把local_school看成全局变量,
    但每个属性如local_school.student都是线程的局部变量,可以任意读写而互不干扰


    可以理解为全局变量local_school是一个dict,不但可以用local_school.student,还可以绑定其他变量,如local_school.teacher等

    ThreadLocal解决了参数在一个线程中各个函数之间互相传递的问题

    朝闻道
  • 相关阅读:
    string与bytes相互转化
    python3之requests
    BeyondCompare3提示许可密钥过期完美解决方法
    windows环境下 curl 安装和使用
    Linux:PS命令详解与使用
    wireshark怎么抓包、wireshark抓包详细图文教程
    七层协议和四层协议
    linux中快速清空文件内容的几种方法
    python_02列表,字典,IO处理
    python_01
  • 原文地址:https://www.cnblogs.com/wander-clouds/p/8477467.html
Copyright © 2011-2022 走看看