Я пишу многопоточное приложение Python, которое будет вести себя по-разному в системах в зависимости от деталей реализации GIL.
Есть ли универсальный способ проверить, есть ли у интерпретатора, на котором я работаю, GIL в стиле CPython?
Я пишу многопоточное приложение Python, которое будет вести себя по-разному в системах в зависимости от деталей реализации GIL.
Есть ли универсальный способ проверить, есть ли у интерпретатора, на котором я работаю, GIL в стиле CPython?
Нет, в стандартной библиотеке нет 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'