gpt4 book ai didi

python - 为什么使用全局解释器锁?

转载 作者:IT老高 更新时间:2023-10-28 21:11:22 27 4
gpt4 key购买 nike

Python的全局解释器锁的作用究竟是什么?编译成字节码的其他语言是否采用类似的机制?

最佳答案

一般来说,对于任何线程安全问题,您都需要使用锁来保护您的内部数据结构。这可以通过不同级别的粒度来完成。

  • 您可以使用细粒度锁定,其中每个单独的结构都有自己的锁定。

  • 您可以使用粗粒度锁定,其中一个锁可以保护所有内容(GIL 方法)。

每种方法各有利弊。细粒度锁定允许更大的并行性 - 两个线程可以当它们不共享任何资源时并行执行。但是,管理开销要大得多。为了每一行代码,你可能需要获取和释放几个锁。

粗粒度方法正好相反。两个线程不能同时运行,但是一个单独的线程会运行得更快,因为它没有做太多的簿记。最终归结为单线程速度和并行性之间的权衡。

已经有一些尝试在 python 中删除 GIL,但单线程机器的额外开销通常太大。即使在多处理器机器上,某些情况实际上可能会更慢由于锁争用。

Do other languages that are compiled to bytecode employ a similar mechanism?

它各不相同,它可能不应该被视为一种语言属性,而是一种实现属性。例如,有一些 Python 实现,如 Jython 和 IronPython,它们使用底层 VM 的线程方法,而不是 GIL 方法。此外,Ruby 的下一个版本似乎正在移动 towards引入 GIL。

关于python - 为什么使用全局解释器锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/265687/

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