以下陈述中是否有Lock.acquire/release
幕后的内容:
my_thread_local = threading.local()
my_thread_local.some_value = 1
这个怎么样:
local_variable = my_thread_local.some_value
答案 0 :(得分:5)
仅在使用后备实施时。
如果未提供线程局部存储(即,如果在编译解释器时未定义Py_HAVE_NATIVE_TLS
),则将使用涉及显式锁定的实现。
在具有适当本机实现的平台上,因此不需要Python运行时来模拟此功能,因此无需在Python运行时层锁定。
撰写本文时(2017年7月),来自Python 3开发分支的后备实现was recently removed(不再 任何针对BeOS或其他模糊操作系统的线程模块以前得到支持)。因此,在Python 3的未来版本中,当线程可用时,线程本地存储的本机版本将始终。
(这里有意没有涉及Python 3.0:2.7和3.1及更高版本中存在的本机线程本地存储实现在3.0中不存在于代码中的相同位置,它们在其他地方托管版本,我不认为值得我花时间去挖掘以确定功能是否暂时移动,或者它是否完全缺失了。