Выпускает ли Python Global Interneter Lock при блокировке привязок C? - PullRequest
0 голосов
/ 21 января 2019

У меня есть некоторые привязки C, которые делают большой доступ к диску.

Выпускается ли GIL, когда библиотека C блокирует доступ к диску?

1 Ответ

0 голосов
/ 21 января 2019
Библиотеки

C, которые выполняются как часть программы на Python, могут, как вы предлагаете, выпустить GIL перед выполнением обширных вычислений без необходимости доступа к объектам Python, и это действительно позволит увеличить параллелизм, позволив вводу-выводу продолжить работу вфон.Однако, если библиотека не предназначена для среды Python, она, вероятно, не будет, и даже если бы не было никакой гарантии, что она выпустит GIL.

Если библиотеки не были специально разработаны для Python, они выигралиОтпусти GIL.В этом случае вы можете многого добиться, поместив соответствующие функции в оболочки C, которые управляют GIL.

Если библиотеки не были специально для Python или если GIL не упомянут в их документации,Единственный способ убедиться в этом - изучить исходный код.Ваш код на C может манипулировать GIL с помощью функций, определенных в C API Python .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...