zoukankan      html  css  js  c++  java
  • 参数在一个线程中各个函数之间互相传递的问题(ThreadLocal)

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

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

    import threading
    # 创建全局ThreadLocal对象:
    local_school=threading.local()
    
    def process_student():
        # 将全局下属性为st的数据赋值给std
        # 获取当前线程关联的st:
        std=local_school.st
        print('Hello, %s (in %s)' % (std, threading.current_thread().name))
    
    def process_thread(*name):
        # local_school.st表示local_school下的属性st:将传入的参数赋给此属性
        # 绑定ThreadLocal的st:
        local_school.st=name
        process_student()
    
    # 创建两个线程
    # 属性name是给该线程标明名字,传入*name表示args参数内容
    t1=threading.Thread(target=process_thread,args=('123','ailun','xuehao'),name=('qq',))
    t2=threading.Thread(target=process_thread,args=('456',),name='weixin')
    t1.start()
    t2.start()
    t1.join()
    t2.join()
  • 相关阅读:
    java 编程基础 Class对象 反射:代理模式和静态代理
    sql优化(排序)
    Mysql备份恢复
    Mysql5.7.33安装
    Networker oracle备份恢复
    Centos7 安装11.2.0.4
    spring security 自定义多种方式登录授权
    CentOS 7 安装Nginx 并配置自动启动
    Nginx 配置模板
    Alibaba cloud 版本说明
  • 原文地址:https://www.cnblogs.com/Dark-fire-liehuo/p/9760598.html
Copyright © 2011-2022 走看看