gpt4 book ai didi

python - threading.local 是否使用锁进行访问?

转载 作者:行者123 更新时间:2023-11-28 21:40:42 24 4
gpt4 key购买 nike

是否有 Lock.acquire/release 在下面的语句中进行:

my_thread_local = threading.local()
my_thread_local.some_value = 1

这个怎么样:

local_variable = my_thread_local.some_value

最佳答案

仅当正在使用回退实现时。

如果未另外提供线程本地存储(即,如果编译解释器时未定义 Py_HAVE_NATIVE_TLS),将使用涉及显式锁定的实现。

在具有适当 native 实现的平台上,因此不需要 Python 运行时来模拟此功能,因此不需要在 Python 运行时层进行锁定。

截至撰写本文时(2017 年 7 月),后备实现 was recently removed来自 Python 3 的开发分支(它不再任何用于 BeOS 或以前支持的其他模糊操作系统的线程模块)。因此,在 Python 3 的 future 版本中,线程本地存储的 native 版本将始终在线程完全可用时使用。


流程图:

  • 你在使用 Python 2.x 吗?
    • 您使用的是 Windows 吗? native 线程本地存储可用。
    • 您是否使用任何非 Windows 平台? Python 正在使用基于锁定的实现。
  • 您使用的是 Python 3.1 或更高版本吗?
    • 您使用的是 Windows 吗? native 线程本地存储可用。
    • 您使用的是现代 Linux、MacOS 还是其他实现 POSIX 线程的平台? native 线程本地存储可用。
    • 您使用的是不支持 pthreads API 的非 Windows 平台吗? 您要么根本没有线程支持,要么线程本地存储将涉及锁定。

(这里有意不涉及 Python 3.0:2.7 和 3.1 及更高版本中存在的 native 线程本地存储实现在 3.0 中不存在于它们托管在其他代码中的同一位置版本,我认为不值得花时间深入挖掘以确定该功能是暂时移动了还是完全缺失了)。

关于python - threading.local 是否使用锁进行访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45315320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com