LINUX.ORG.RU

История изменений

Исправление upcFrost, (текущая версия) :

Как раз через sleep можно частично контролировать gil и смену контекста. Аналогично через asyncio.sleep можно пропустить цикл без реального ожидания. Полезно когда есть нужно собрать результат пачки тасков но при этом нет возможности напрямую использовать скажем gather (например таски прикрыты толстым слоем 3rd party кода).

Делал такое для graphql для снятия проблемы N+1 при вложенных подзапросах - все запросы собираются путем пропуска одного цикла когда реальный запрос по сети уже отработал и остались только вызовы локальных обработчиков которые гарантированно завершатся в пределах цикла, а других вариантов связать запросы в кошках написанного на С фреймворка просто нету. Получается довольно короткое и красивое, хоть и несколько упоротое решение

Исходная версия upcFrost, :

Как раз через sleep можно частично контролировать gil. Аналогично через asyncio.sleep можно пропустить цикл без реального ожидания. Полезно когда есть нужно собрать результат пачки тасков но при этом нет возможности напрямую использовать скажем gather (например таски прикрыты толстым слоем 3rd party кода).

Делал такое для graphql для снятия проблемы N+1 при вложенных подзапросах - все запросы собираются путем пропуска одного цикла когда реальный запрос по сети уже отработал и остались только вызовы локальных обработчиков которые гарантированно завершатся в пределах цикла, а других вариантов связать запросы в кошках написанного на С фреймворка просто нету. Получается довольно короткое и красивое, хоть и несколько упоротое решение