zoukankan      html  css  js  c++  java
  • 为了更好的多线程性能,在对象创建或者更新时,若数据大于2047字节则 Python 的 GIL 会被释放。 执行计算密集型任务如压缩或哈希时释放 GIL

    hashlib — Secure hashes and message digests — Python 3.8.3 documentation https://docs.python.org/3.8/library/hashlib.html

    For better multithreading performance, the Python GIL is released for data larger than 2047 bytes at object creation or on update.

    hashlib --- 安全哈希与消息摘要 — Python 3.8.3 文档 https://docs.python.org/zh-cn/3.8/library/hashlib.html

    术语对照表 — Python 3.8.3 文档 https://docs.python.org/zh-cn/3.8/glossary.html#term-gil

     global interpreter lock -- 全局解释器锁

    CPython 解释器所采用的一种机制,它确保同一时刻只有一个线程在执行 Python bytecode。此机制通过设置对象模型(包括 dict 等重要内置类型)针对并发访问的隐式安全简化了 CPython 实现。给整个解释器加锁使得解释器多线程运行更方便,其代价则是牺牲了在多处理器上的并行性。

    不过,某些标准库或第三方库的扩展模块被设计为在执行计算密集型任务如压缩或哈希时释放 GIL。此外,在执行 I/O 操作时也总是会释放 GIL。

    创建一个(以更精细粒度来锁定共享数据的)“自由线程”解释器的努力从未获得成功,因为这会牺牲在普通单处理器情况下的性能。据信克服这种性能问题的措施将导致实现变得更复杂,从而更难以维护。

    global interpreter lock

    The mechanism used by the CPython interpreter to assure that only one thread executes Python bytecodeat a time. This simplifies the CPython implementation by making the object model (including critical built-in types such as dict) implicitly safe against concurrent access. Locking the entire interpreter makes it easier for the interpreter to be multi-threaded, at the expense of much of the parallelism afforded by multi-processor machines.

    However, some extension modules, either standard or third-party, are designed so as to release the GIL when doing computationally-intensive tasks such as compression or hashing. Also, the GIL is always released when doing I/O.

    Past efforts to create a “free-threaded” interpreter (one which locks shared data at a much finer granularity) have not been successful because performance suffered in the common single-processor case. It is believed that overcoming this performance issue would make the implementation much more complicated and therefore costlier to maintain.

  • 相关阅读:
    jquery resize事件增强版
    Jquery获取selelct选中值
    IIS URL重写找不到页面 (URLRewriter.dll伪静态)
    session,cookie,sessionStorage,localStorage的区别及应用场景
    移动端1px问题解决方法
    未知宽高元素水平垂直居中方法
    node 和 http
    博客园文字设置颜色,类别方法
    关于node
    node 和 Babel
  • 原文地址:https://www.cnblogs.com/rsapaper/p/12989313.html
Copyright © 2011-2022 走看看