【发布时间】:2013-09-12 22:34:52
【问题描述】:
我正在编写一个多线程 Python 应用程序,它在系统上的行为会有所不同,具体取决于 GIL 实现的细节。
我是否有一种通用的方法来测试我正在运行的解释器是否具有 CPython 风格的 GIL?
【问题讨论】:
我正在编写一个多线程 Python 应用程序,它在系统上的行为会有所不同,具体取决于 GIL 实现的细节。
我是否有一种通用的方法来测试我正在运行的解释器是否具有 CPython 风格的 GIL?
【问题讨论】:
不,stdlib 没有 API 或标志来测试 GIL。现在您可以放心地假设所有版本的 CPython 和 PyPy 都有 GIL,而 IronPython 和 Jython 没有 GIL。
Python 3.3 和更新版本有sys.implementation.name。在旧版本中,您可以使用platform.python_implementation()。
>>> import sys
>>> sys.implementation.name
'cpython'
>>> import platform
>>> platform.python_implementation()
'CPython'
【讨论】: