在CPython中,根据https://docs.python.org/3/glossary.html#term-global-interpreter-lock,内置操作似乎是原子和线程安全的。
通过使对象模型(包括关键的内置类型,如dict)隐式地安全地防止并发访问,从而简化了CPython的实现。
但是我找不到有关Pypy的任何信息:https://doc.pypy.org/en/latest/cpython_differences.html。
其他stackoverflow answer指出PyPy行为可能不同,但尚不清楚是否确实如此。
所有这些都假设您正在使用CPython; Jython,IronPython,Pypy和其他python实现可能会在何时切换线程方面做出不同的决定。
Pypy dict(和其他内置)线程安全吗?是否?
根据this question in the FAQ,PyPy确实具有GIL。这应该防止对任何类型的变量的任何并发访问;因为一次只有一个线程实际上可以执行任何操作。
是的,PyPy有一个GIL。删除GIL非常困难。