2013-11-25 2 views
0

Если я вызываю многопоточную разделяемую библиотеку и передаю ей набор обратных вызовов Python, правильно предположить, что GIL будет по-прежнему проблемой при выполнении Python, правильно?Python, ctypes и распараллеливание

Dustin

ответ

2

Неясно, что вы имеете в виду под "проблемы". Библиотека должна получить GIL, прежде чем переходить на Python, и из-за GIL только один поток за один раз может выполнить код уровня на Python. Но нет ничего, что требовало бы, чтобы библиотека ожидала возврата обратного вызова - может продолжать делать столько, сколько ему нравится в своих потоках. Независимо от того, является ли это семантически правильным зависит от знания точных сведений о том, что делает библиотека.

+0

«Библиотека должна получить GIL, прежде чем переходить на Python». Именно это я и спрашивал. Я всегда упоминаю GIL как проблему в контексте многопоточности, поскольку, я уверен, большинство людей это делает. –