Python: GIL context - switching

后端 未结 2 1328
独厮守ぢ
独厮守ぢ 2021-01-02 08:21

So, I generally have a pretty good understanding of how the Global Interpreter Lock (GIL) in Python works. Essentially, while the interpreter is running, one thread holds t

2条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-02 08:52

    Yes, the interpreter can always release the GIL; it will give it to some other thread after it has interpreted enough instructions, or automatically if it does some I/O. Note that since recent Python 3.x, the criteria is no longer based on the number of executed instructions, but on whether enough time has elapsed.

    To get a different effect, you'd need a way to acquire the GIL in "atomic" mode, by asking the GIL not to be released until you release it explicitly. This is impossible so far (but see https://bitbucket.org/arigo/cpython-withatomic for an experimental version).

提交回复
热议问题