Обновить
1024K+

Python *

Высокоуровневый язык программирования

696,93
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Асинхронный http-клиент, или почему многопоточность — лишнее

Время на прочтение10 мин
Охват и читатели9.6K
Какое-то время назад Хабре проскакивала заметка про клиент-парсер сайтиков на Питоне. Автор на этом примере разбирал проблемы многопоточных сетевых приложений.

Но мне показалось, что ту же задачу (вернее, ее главную часть — параллельные соединения c http-cервером) вполне можно эффективно решить и без потоков.

И решил...

Простой консольный прогрессбар на питоне

Время на прочтение3 мин
Охват и читатели32K
В связи с некоторыми вычислениями на питоне (например, подсчётом коэффициента симметрии карты реликтового излучения) мне захотелось сделать процесс более наглядным. Ну хотя бы добавить прогресс-бар. Скучно, знаете ли, сидеть перед пустой консолью и втыкать на запущенную команду. То ли работает, то ли висит… с ходу не понять. А делать какой-нибудь лог исполнения не хочется, так как потом в полученом хаосе глаз теряется.
Недавно нашёл выход: модуль progressbar.

PyCamp Киев

Время на прочтение1 мин
Охват и читатели760
image30 января мы будем рады видеть вас на конференции PyCamp Kyiv.

В конференции примут участие python-разработчики украинских и российских команд, уже полученно более 250 заявок на участие.

Ожидаются доклады хорошо известных в питоновских кругах Юрия Юревича из Омска, Александра Шигина из Москвы; также среди докладчиков Михаил Кашкин(aka xen) из Днепропетровска, Александр Бельченко из Запорожья, киевляне Александр Соловьев (aka ingspree), Андрей Светлов, Серегей Кириллов (aka rushman), Андрей Мишковский, Владимир Пузанов (aka farcaller), Владимир Кириллов (aka darkproger), Дмитрий Кожевин. Также рассказать о новой IDE для Python — PyCharm планирует Дмитрий Жемеров (aka yole) из JetBrains.

Участие в конференции платное. Регистрационный сбор (на входе) составит 50 грн. По студенческому билету (любой страны) — 20 грн.

Конференция пройдет в помещении i-klass, по адресу ул.Ивана Мазепы, 34 (прежнее название улицы — ул. Январского Восстания), Киев.
Ориентиры — Киево-Печерская Лавра, музей Великой Отечественной Войны, музей «Мистецький Арсенал».
Ближайшие станции метро — Арсенальная (красная ветка), Печерская (зеленая ветка)
Карту можно посмотреть тут: http://www.i-klass.com/rus/contacts/how

bpython

Время на прочтение2 мин
Охват и читатели15K
image bpython — это красивый и функциональный интерфейс к стандартному интерпретатору Python для *nix. Он распространяется под Лицензией MIT и обладает следующими интересными возможностями:



  • In-line подсветка синстаксиса
  • Автодополнение кода с предложениями
  • Автовыравнивание кода
  • Pastebin
  • Сохранение введённого кода в файл
  • Восстановление удалённой строки («Rewind»)
  • Предложение параметров для функций

Читать дальше →

Играемся с гироскопом ноутбука thinkpad в linux

Время на прочтение2 мин
Охват и читатели4.4K
В линукс показания с этого датчика можно считать из файла /sys/devices/platform/hdaps/position
Можно создать виртуальный джойстик и, например, катать им шарики в neverball, крутить google earth и т.п. :)
Всё это описано тут
Я тоже решил развлечься и написал небольшую программу, которая заставляет cairo-clock сползать по экрану в зависимости от наклона ноутбука.
подробности

Озеленение Twisted

Время на прочтение2 мин
Охват и читатели3.3K
Как обычно, в праздники, в свободное время от затирки плитки и прочих прибиваний плинтуса, меня захватила очередная идея из цикла «попробовать». На хабре проскочила статья о Pyrant. Первой итерацией я взял и переделал основную часть протокола на Twisted — github.com/Deepwalker/tx-tokyo. И все было хорошо, наступление шло по всем фронтам, но тут я перешел к питоничной части pyrant, и понял что сделать yield a[megakey]='mega data string', вообще говоря невозможно. Это было очень печально, ведь в статье меня зацепило именно легкое обращение с данными в питоничной форме. Что же делать, Пух, спросил я себя? И вспомнил о greenlet-ах.

Читать дальше →

Pyrant+PyModels — легчайшая замена Django ORM*

Время на прочтение2 мин
Охват и читатели2.3K
Тихо и незаметно вышла ноль-первая версия библиотеки Pyrant, т.е. Pythonic Tyrant.

Pyrant — это полноценная питонья обвязка для Tokyo Tyrant, сетевого интерфейса для Tokyo Cabinet.

Tokyo Cabinet — это современное, легкое, гибкое и суперское хранилище данных (DBM). Оно поддерживает несколько типов БД, включая как простейшее key/value, так и «табличное», а вернее — документо-ориентированное. Последнее ставит Tokyo в один ряд с такими славными продуктами как CouchDB, MongoDB и др., при этом TC/TT значительно проще и легче, а поэтому быстрее. Кроме того, он поддерживает достаточно сложные запросы по данным (см. список операторов) с различением строчных и числовых значений. И еще для Tokyo Cabinet можно писать расширения на Lua.
Читать дальше →

mod_wsgi 3.1 вышел 25 ноября

Время на прочтение2 мин
Охват и читатели927
Что было нового в версии 3.0:
  1. Поддержка питона 3.1 и выше.
  2. Опции «process-group», «application-group», «callable-object» и «pass-authorization» могут быть размещены в директивах WSGIScriptAlias и WSGIScriptAliasMatch
  3. Если клиент обрывает соединение в процессе обработки итератора вместо «бросания исключения» теперь записывается отладочное сообщение в лог
  4. В директиву WSGIDaemonProcess добавлена опция «chroot», позволяющая запускать приложения более изолированно
  5. Добавлена глобальная директива WSGIPy3kWarningFlag, при использовании python2.6 будут выдаваться предупреждения
  6. Исправлена «assertion error» если питон был скомпилирован с директивой Py_DEBUG
  7. Добавлена поддержка «Content-Type: chunked» в запросе (директива «WSGIChunkedRequest»). Данные склеиваются и передаются приложению на обработку.
  8. Значения HTTP заголовков теперь передаются в справочнике окружения, для хуков доступа, авторизации и аутентификации
  9. Флаг «flag wsgi.run_once» не выставляется в True, при работе в режиме демона, когда «maximum-requests» установлен в 1. В случае использования множества потоков, параметр «maximum-requests» проверяется только после завершения обработки запроса, поэтому нет гарантии, был ли выполнен только один запрос
  10. Теперь интерпретаор инициализируется не в родительском процессе, а только после того, как будет создан дочерний
  11. Сообщения из модулей-расширений на C попадают в логи виртуальных хостов, как и положено, а не в общий лог, как было ранее
  12. Теперь невозможно писать сообщения в логи «чужих» виртуальных хостов
  13. В режиме демона может производиться внутренняя переадресация с использоваением заголовка «Location» в ответе
  14. В режиме демона может использоваться директива «WSGIErrorOverride», для того, чтобы возвращать стандартные страница ошибок Apache
  15. Добавлена директива «WSGIPythonWarnings» работающая по аналогии с директивой «-W» интерпретатора
  16. В директиву «WSGIDaemonProcess» добавлена опция «cpu-time-limit» определяющая количество процессорного времени, после которого процесс будет перезапущен
  17. В директиву «WSGIDaemonProcess» добавлена опция «cpu-priority» говорящая за себя
  18. Добавлена директива «WSGIHandlerScript» позволяющая определить скрипт, обрабатывающий определённый тип файлов


И ещё множество исправлений и улучшений, о которых можно почитать в оригинале тут: code.google.com/p/modwsgi/wiki/ChangesInVersion0301

Скачать, как обычно можно тут:
code.google.com/p/modwsgi/downloads/list

UPD:
Да, всё работает
./configure --with-python=python3.1 --disable-framework
make && sudo make install

OptionParser и UnitTest в python скриптах

Время на прочтение9 мин
Охват и читатели4.8K
python logoВ этой статье я хочу поинтересоваться у общественности правильно ли я реализую возможности данных двух замечательных модулей питона, которые уже давно вошли в стандартный (жизненно необходимый) набор питоноводов всей планеты.
Читать дальше →

«Наследование» не от классов

Время на прочтение5 мин
Охват и читатели5.5K
image
В Питоне совсем не важно, что вы поместите в определение класса. Это могут быть строки, числа, объекты, переменные. В третьем Питоне можно даже передавать именованные аргументы.
Реализация

Проект по переводу «Погружения в Python 3»

Время на прочтение1 мин
Охват и читатели26K
      Осенью вышла книга Марка Пилгрима «Dive into Python 3», и я решил попробовать её перевести на русский язык.
      Собственно, вся работа ведётся в Викитеке — ru.wikisource.org/wiki/Погружение_в_Python_3_(Пилгрим).
      Пока переведено только несколько первых глав, потому что занимаюсь этим я один.
Читать дальше →

Основы работы с потоками в языке Python

Время на прочтение20 мин
Охват и читатели66K

Предисловие


Данную статью я затеял написать после учащающихся вопросов как на форуме так и вопросов в icq на тему многопоточности в CPython. Проблема людей, которые их задают происходит, в основном, из незнания или непонимания основных принципов работы многопоточных приложений. По крайней мере, это относится к используемой мной модели многопоточности, которая носит название Thread Pool (Пул потоков). Часто встречаемой проблемой является и другое: люди не имеют элементарных навыков работы со стандартными модулями CPython. В статья я постараюсь привести примеры такого незнания, не останавливаясь на личностях, так как это по моему скромному мнению неважно. Исходя из условий, в которых пишется эта статья, то мы немного затронем и работу через proxy серверы (не путать с SOCKS).
Читать дальше →

Ближайшие события

Twisted в действии — memcache на python

Время на прочтение8 мин
Охват и читатели7.6K

Преамбула


В связи с выходными потратил немного времени на реализацию сервера Memcache с использованием python-фреймворка Twisted. В итоге я получил быстродействие в два раза более низкое, что я не считаю очень критичным, а также возможность реализовать парочку расширений оригинального протокола. Также возможны оптимизации, которые еще улучшат быстродействие.
Протокол не был реализован полностью — есть еще моменты над которыми можно поработать, но стандартные set/get вполне работоспособны и готовы к использованию.

Средства


Для хранения кеша используем базовый класс dict. Как вы догадываетесь, реализация dict в python быстра, этот базовый тип используется в python настолько активно, что его не оставили без детальной оптимизации. Таким образом, мы автоматом имеем структуру для хранения кеша в памяти. Осталось реализовать протокол memcache, для предоставления доступа к dict другим программам.

Для реализации сервера используем Twisted. Есть множество вариаций неблокирующего IO для python на сегодня, но Twisted это уже классика, и имеет в своем арсенале достаточно средств для легкого решения подобных задач.

Читать дальше →

sms2twitter гейт за 5 минут

Время на прочтение6 мин
Охват и читатели2K
imageЦелью статьи является демонстрация возможностей Python for s60 для работы с смс сообщениями и базами данных. Чтобы было интересней, разберем на реальном примере, создадим приложение, которое будет читать новые сообщения смартфона, парсить их, сохранять в свою базу данных номера телефонов с логинами и паролями, и постить твиты, пришедшие с этих номеров.

Для чего это еще может пригодиться? В наше время смс сервисы используются достаточно широко. Способов их реализации достаточно много. У меня недавно возникла необходимость реализовать сервис, при котором клиенты могли бы посылать смс сообщением номер заказа и в ответ приходил бы его статус. Задача решилась так: за 500 руб., на барахолке был куплен старенький Nokia 7610 в разваливающемся состоянии, у которого не работала половина кнопок, были проблемы со звуком и т. д. Туда была вставлена сим карта от местного оператора с безлимитным смс пакетом. Теперь этот аппарат будет играть роль сервера, который будет работать в режиме 24/7, с бесперебойным источником питания (аккамулятор), и не будет знать проблем с охлаждением :)

Читать дальше →

ХабраКарма — пишем приложение на Python for s60

Время на прочтение12 мин
Охват и читатели3.5K
imageПосле того, как мы разогрели аппетит к Python for s60 и начали учиться писать приложения, хочу предложить продолжить постигать программирование для symbain на замечательном языке программирования python.

На этот раз сделаем что нибудь полезное, а именно напишем приложение, которое будет показывать карму. Не просто показывать, а выводить поверх всех «окон» табличку, на которой будет значение кармы и разница с предыдущем значением. Помимо этого, программу будет издавать победный гонг при повышении кармы и крик отчаяния при ее понижении. Ко всему прочему, мы запустим ее, как сервер, то есть она не будет отображаться в списке запущенных программ.

Тем, кому больше важен результат, нежели процесс, милости просим в конец статьи, где вас ожидает готовое приложения HabraKarma 1.0 !!!
Поехали...

Стиль кода

Время на прочтение1 мин
Охват и читатели13K
По просьбам хабраюзеров я сделал перевод текста, составленного abchernin на основе PEP 8 — «Styleguide for Python Code» (см. топик).

Некоторые фразы я переводить не стал, потому что они к сути дела не относятся, но содержат в себе забавную игру слов.

Надеюсь, вам будет полезна моя работа: pdf, 200кб
Читать дальше →

KDE4 Plasma Desktop. Создание плазмоида

Время на прочтение10 мин
Охват и читатели11K
Plasma
Плазмоид (plasmoid) — это виджет рабочего стола в KDE4 Desktop. Любой видимый элемент управления на рабочем столе является плазмоидом, будь то часы, системный трей, монитор загруженности процессора или окошко с прогнозом погоды.

Этот урок описывает создание плазмоида, умеющего делать запросы к некоему серверу и показывать полученный результат. Так как сервер требует авторизации пользователя, будет разобран процесс хранения данных учетной записи пользователя в KWallet. Язык разработки: Python.
Читать дальше →

Python и скорость: Unladen Swallow, PyPy, Cython

Время на прочтение4 мин
Охват и читатели7.8K
Краткий перевод обсуждения Recommendation against Python?:

kng
Я слышал, что сотрудникам Google не рекомендуют использовать Python для новых проектов, что мне кажется глупым, учитывая как много питоновского кода и поддержки самого языка Python исходит из Google. Я начал поиски информации, но ничего не нашел. Вы знаете что-то об этом или это просто слухи?

Collin Winder
Даже простой здравый смысл ограничивает применимость Python, когда речь идет о масшабах Google — он не так быстр как Java или C++, работа с тредами хромает, расходуется больше памяти и т.д. Одно из требований, с которым мы сталкиваемся при проектировании новых систем, это «Что мы будем делать, если нагрузка возрастет в 10 или в 100 раз? Что мы будем делать, если целая планета решит что наш новых сервис офигителен?» Любая технология, которая усложняет соблюдение этого требования — и я считаю, что Python попадает в эту категорию — должна быть отвергнута и даже прочие её полезности не играют важной роли в этом случае. Приходится балансировать слабые и сильные стороны Python — ваши разработчики могут быть более продуктивными, используя Python, но если им придется крепко поработать над масштабированием под большую нагрузку, то удастся ли вам вырваться с Python вперед? И т.д.

Unladen Swallow планирует сместить этот баланс — чтобы сделать возможным использовать Python в большем числе проектов, где сейчас его использовать еще нерационально. Но панацеей это не будет. Python все еще будет медленнее, чем C или Java, будет использовать больше памяти и ужасно работать с тредами, пока кто-нибудь не решит инвестировать ресурсы в Python в объеме, сравнимом с ресурсами, которые Sun инвестировала в JVM. Я надеюсь, что внимание к производительности Python со стороны разработчиков будет носить лавинообразный характер — чем больше компаний будет заинтересовано в этом, тем больше ресурсов будет инвестировано, тем больше аспирантов будут работать над Python (и выкладывать результаты своей работы) и т.д.
Читать дальше →

Подсветка исходного кода

Время на прочтение4 мин
Охват и читатели4.7K
Так получилось, что на хабре принято подсвечивать код с помощью Source Code Highlighter. Список поддерживаемых языков не впечатляет, да и возможности выбрать цветовую схему я не нашел. Существует библиотека pygments, которая понимает большинство используемых языков, умеет выдавать на выходе html, картинки, latex и не только. Но для хабры, как известно, нужен особый подход, и html вывод pygments хабра не пропускает. В связи с этим я написал небольшой класс для pygments, который исправляет это досадное недоразумение. Воспользоваться веб-версией можно по адресу paste.ly.
А посмотреть исходник и пример подсвеченного кода под катом