Сделать вызовы C-Extension "зелеными" в python

У меня есть код Python, который сильно зависит от гринлетов. Я могу использовать либо gevent или же eventlet,

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

1 ответ

Вы можете использовать нормальный PyObject_CallFunction(eventlet/greenlet.sleep) передать контроль над другими зелеными нитями. Он должен быть запущен с заблокированным GIL, как и любой другой код Python.

Вы не можете запустить код Python без GIL. (можно, но он быстро уйдет вбок и испортит память).

Другие вопросы по тегам