zoukankan      html  css  js  c++  java
  • Python多线程-ThreadLocal

    参考:https://www.liaoxuefeng.com/wiki/1016959663602400/1017630786314240#0

    ThreadLocal

    ThreadLocal变量虽然是全局变量,但每个线程都只能读写自己线程的独立副本,互不干扰。ThreadLocal解决了参数在一个线程中各个函数之间互相传递的问题。

    import threading
    
    # 创建全局ThreadLocal对象
    locals_school = threading.local()
    
    
    def process_student():
        # 获取当前线程关联的student: student是线程的局部变量,可以任意读写而互不干扰,
        # 也不用管理锁的问题,ThreadLocal内部会处理。
        std = locals_school.student
        print(f'Hello, {std} ,线程名称 {threading.current_thread().name}')
    
    
    def process_thread(name: str):
        # 绑定ThreadLocal的student属性
        locals_school.student = name
        process_student()
    
    
    t1 = threading.Thread(target=process_thread, args=('李好',))
    t2 = threading.Thread(target=process_thread, args=('王大毛',))
    
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    
    

    ThreadLocal最常用的地方就是为每个线程绑定一个数据库连接,HTTP请求,用户身份信息等,这样一个线程的所有调用到的处理函数都可以非常方便地访问这些资源。

    作者:zy7y
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    POJ 2342
    SHU 413
    SHU 414
    进制转换模板
    SHU 第15届上海大学程序设计联赛夏季赛[热身赛] 第三题(G题)
    POJ 3185
    XTU 1260
    高斯消元法模板
    POJ 2057
    模态窗口的定时关闭
  • 原文地址:https://www.cnblogs.com/zy7y/p/13344848.html
Copyright © 2011-2022 走看看