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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    udp tcp
    easy_install jinja2 mac linux
    linux 常用命令;
    Mac android 开发 sdk配置和手机连接
    ubuntu server 分区
    常见操作
    环境搭建相关
    ssh登录虚拟机上的linux
    算法学习
    转载一个 测试java类的玩意
  • 原文地址:https://www.cnblogs.com/zy7y/p/13344848.html
Copyright © 2011-2022 走看看