Python中的threadlocal

本文介绍了在多线程环境下如何利用Python的threading.local()来解决局部变量传递的繁琐过程,使得每个线程可以方便地存取自己的数据,并保持线程之间的数据隔离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在多线程中,对于共有的共享数据的操作,需要加锁

但是,对于局部变量,则在每个线程之间相互独立

假如线程T想要把函数F1中的局部变量V1传到函数F2中去,F2再想把这个变量传到F3中去,一层一层地传较为繁琐

将Python的threading.local()返回的对象命名为tl,将tl放在全局的位置,可在各个函数中为tl绑定属性

可以把tl视作一个字典,key值为线程id,value为一个字典,value代表的这个字典中包含我们绑定的属性。

这里有个问题是,如果线程T1知道了线程T2的id,那么岂不是能在线程T1中修改线程T2的数据吗?这牵扯到一个线程隔离的问题。

实际的threading.local()处理了这种情况,原理在稍后研究。

这样当多线程执行的时候,通过使用threading.local(),对于每个线程,可以在任何地方方便地存取自己线程对应的数据,

各个线程相互隔离,不会互相干扰。

转载于:https://www.cnblogs.com/geeklove01/p/8157668.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值