Существует ли универсальный способ проверки существования GIL?

Я пишу многопоточное приложение Python, которое будет вести себя по-разному в системах в зависимости от деталей реализации GIL.

Есть ли универсальный способ проверить, есть ли у интерпретатора, на котором я работаю, GIL в стиле CPython?


person blueberryfields    schedule 12.09.2013    source источник


Ответы (1)


Нет, в стандартной библиотеке нет 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'
person Christian Heimes    schedule 20.09.2013