Архив за [undefined]

Гринлеты

Примерно год назад, во время массовой истерии по поводу питонячих и не очень асинхронных серверов, я, пытаясь составить своё мнение обо всем об этом, набрел на интересную библиотеку - greenlet. На которой базируется сетевая библиотека eventlet, а на ней всю очередь WSGI веб-сервер spawning.

Как видно из названия, она позволяет делать легкие треды - гринлеты в обычном не stackless питоне. Я написал небольшой скрипт "на попробовать":

#!/usr/bin/env python
from greenlet import greenlet

def dispatch():
   while True:
       for w in workers:
           w.switch()
           print 'dispatch'

       if not all(workers):
           break

d = greenlet(dispatch)

def worker(name):
   for i in range(5):
      print name, i
      if i % 2 == 0:
         print 'switch'
         d.switch()

workers = [
   greenlet(lambda: worker('foo')),
   greenlet(lambda: worker('bar'))
]

print 'start'

d.switch()

print 'done'

вывод:

start
foo 0
switch
dispatch
bar 0
switch
dispatch
foo 1
foo 2
switch
dispatch
bar 1
bar 2
switch
dispatch
foo 3
foo 4
switch
dispatch 
bar 3
bar 4
switch
dispatch
done

и вот недавно набрел на него. Правда прекрасно? Такой простор для творчества - передача контекста выполнения в произвольное место с сохранением состояния. Некий намек на потусторонний call/cc из "других" языков.

Ещё тогда у меня родилась идея где это можно ...

NoSQL: Нереляционные хранилища

Пора нарушить молчание и рассказать о том, что на недавней замечательной конференции 404fest я тоже имел честь выступать с докладом. Посвящен он был модной ныне теме - NoSQL. Доклад получился коротким и поэтому больше политическим чем техническим. Я хотел показать, что этот новый тренд не просто так захватывает умы всё большего числа разработчиков.

Это только первое моё выступление на эту тему, но, я надеюсь, что в скором времени последуют другие на новых площадках


View more documents from Alex Koshelev.

Update: а вот и видео подоспело: