-
Notifications
You must be signed in to change notification settings - Fork 5
Python: трюки с генераторами Заключение
Dmitry Ponyatov edited this page Oct 5, 2019
·
3 revisions
- Генераторы являются невероятно полезным инструментом для решения различных «системных» проблем
- Сила исходит от возможности постройки конвейеров обработки данных
- Можно создавать компоненты, которые подключаются к конвейеру как части многократного использования
- Можно расширить идею конвейера во многих направлениях (сеть, потоки, сопрограммы)
- Мне нравится способ повторного использования кода с генераторами
- Небольшие компоненты, которые просто обрабатывают поток данных
- Лично я думаю, что это намного проще, чем то, что вы обычно видите с OO-шаблонами.
- Модуль
SocketServer
(шаблон стратегии)
import socketserver
class HelloHandler(socketserver.BaseRequestHandler):
def handle(self):
self.request.sendall(b"Hello World\n")
serv = SocketServer.TCPServer(("",8000),HelloHandler)
serv.serve_forever()
- генераторная версия
for c,a in receive_connections(("",8000)):
c.send(b"Hello World\n")
c.close()
- Использование этого стиля программирования для непосвященных может привести к взрыву головы
- Обработка ошибок сложна, потому что у вас есть много компонентов, соединенных вместе
- Необходимо уделять пристальное внимание отладке, надежности и другим вопросам.
- Я надеюсь, что из этого курса у вас появились новые идеи
- Пожалуйста, не стесняйтесь обращаться ко мне
Web: http://www.dabeaz.com\ Twitter: @dabeaz