Как стать автором
Обновить

Комментарии 18

Как минимум, узнал про модуль tornado.gen, спасибо!
А txmongo, не пробовали случайно?
Он ведь вроде бы как раз и предназначен для асинхронных запросов к монгодб.
Нет, пока asyncmongo хватает. Он тоже для этого.
О, пожалуй, то что нужно, спасибо
посмотрите еще motor обязательно.
Спасибо, посмотрю
Есть народ такой «Нахуа». Костыль ведь. При чём работающий не всегда. Или на творчество потянуло?
Это так, игрища =)
в pypy его засунуть — он будет производить мега-электричество мега-пользу
Это каким чудесным образом? Или вы написали чтобы написать?
nvbn засунуть, а не его творение
вы ведь прочитали, чтобы спросить?
Ааа, теперь понял. Извините.
Такое лучше спрятать подальше и никому не показывать.
Да ладно, как информация «как можно делать, но не нужно» пойдёт =)
наверное все же «Самая короткаЯ»
<irony>Как только люди не извращаются, лишь бы Erlang не учить...</irony>
Очень по-хакерски =)

Но, я уверен, тут нужно смотреть в сторону модификации абстрактного синтаксического дерева (AST), а не байт-кода. Для этого есть модуль docs.python.org/library/ast.html

Допустим, если встретили в AST функцию, обернутую в декоратор с именем @shortgen, то ищем в её теле оператор бинарного сдвига и заменяем его на yield + Task.
Из плюсов:
* лучшая переносимость между версиями (т.к. формат AST документирован, а байт-код может изменяться без предупреждения)
* трансформация происходит в момент «компиляции» а не в момент импорта (т.е. в .pyc файле будет уже yield).
* код AST-трансформации по идее должен быть гораздо проще
* не нужно ничего манкипатчить
* проблемы со сложной декомпозицией и установкой результата «не-переменным» должны отпасть.
Из минусов — я не знаю есть ли возможность применять AST трансформацию автоматически, скорее всего нужно писать Мakefile и компилировать .pyo отдельно. К сожалению, в Python нет опций компилятора, как в Erlang parse_transform например.
Может попробуете на досуге? ;-)

Но вообще очень интересный способ, спасибо! Как в NodeJS без yield живут не понимаю.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории