实例化 threading.local() 可创建线程隔离的局部数据对象,如 local_data = threading.local(),各线程读写独立,适用于跨函数传参、保存线程绑定状态等场景。
在 Python 中,threading.local() 是一个用于创建线程局部数据的类。每个线程对这个局部数据的读写都是独立的,互不干扰。这意味着你可以在多线程环境中为每个线程保存独立的状态。
实例化 threading.local() 非常简单,就像创建普通对象一样:
import threading创建一个全局的 thread.local 实例
local_data = threading.local()
def worker():
每个线程都可以设置自己的属性
local_data.value = threading.current_thread().name print(f"当前线程: {threading.current_thread().name}, value = {local_data.value}")创建多个线程
t1 = threading.Thread(target=worker, name="Thread-1") t2 = threading.Thread(target=worker, name="Thread-2")
t1.start() t2.start()
t1.join() t2.join()
上面代码中,local_data = threading.local() 就是 thread.local 的实例化过程。每个线程调用 worker() 时都会设置自己的 value 属性,彼此之间不会冲突。
thread.local 常用于以下情况:
使用 thread.local 时需要注意:
基本上就这些。thread.local() 实例化很简单,关键是理解它提供的“线程隔离”特性。用好它可以简化一些多线程编程中的状态管理问题。