栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Python使用线程本地数据及threading.local库介绍

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python使用线程本地数据及threading.local库介绍

1、如何使用线程本地数据?

    实际案例:

        我们实现了一个web视频监控服务器,服务器端采集摄像头数据,客户端使用浏览器通过http请求接收数据。服务器使用推送的方式(multipart/x-mixed-replace)一直使用一个tcp连接向客户端传递数据。这种方式将持续占用一个线程,导致单线程服务器无法处理多客户端请求。

        改写程序,在每个线程中处理一个客户端请求,支持多客户端访问。

  解决方案:

        threading.local函数可以创建线程本地数据空间,其下属性对每个线程独立存在,多个线程之间都是不干扰的。

2、代码演示

        线程本地数据的简单使用

import threading

# 创建线程的本地数据
l = threading.local()
# 对l任意添加一个属性它都是线程的本地数据,
# x就是主线程的本地数据,其它线程访问不到l下的x
l.x = 1


def f():
    print(l.x)


# 在本线程调用x
f()


# 在子线程中运行f()
# threading.Thread(target=f).start()
# 可以看到抛出一个异常找不到x属性,所有在子线程中使用l也是访问不到x的。
# AttributeError: '_thread._local' object has no attribute 'x'

# 修改f(),让他对进行l.x修改
def f2():
    l.x = 5


# 启动子线程运行f2
threading.Thread(target=f2).start()
# 在主线程中再访问l.x,可以看到还是没有改变还是1,说明每个线程x它是独立的
print(l.x)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/888462.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号