Ответы пользователя по тегу Python
  • Как грамотно сохранять множество в питоне при выходе из программы?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Самый простой путь - pickle. Единственный недостаток, плохая совместимость между версиями питона, это когда сохранились в одной версии, а восстанавливаем в другой.

    import pickle
    
    a=[]
    fp = open("afile.bin")
    pickle.dump(a,fp) #сохранить
    a=pickle.load(fp) #восстановить
    Ответ написан
    Комментировать
  • Какие технологии использовать для частого обновления большого количества строк в БД?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    У Вас выбрана плохая схема обновления рейтингов. При такой схеме, чем больше комментариев, тем с каждым разом будет труднее их обновлять, ведь придется каждый раз пробегать все записи.
    Зачем пересчитывать рейтинг каждый раз для ВСЕХ записей? Попробуйте сделать рейтинг счетчиками, а уж счетчики пересчитывать в проценты или что там у Вас на лету.
    К примеру, изначально:
    запись 1 - счетчик 1
    запись 2 - счетчик 1
    запись 3 - счетчик 1

    Далее, на запись 2 было сделано последовательно 10 комментариев (при каждом комментарии обновляем счетчик записи), стало
    запись 1 - счетчик 1
    запись 2 - счетчик 11
    запись 3 - счетчик 1
    комментарий 1, для записи 2, счетчик, 1
    ...
    комментарий 10, для записи 2, счетчик, 1

    Теперь для составления рейтинга нам достаточно найти только максимум по счетчику, приняв его за 100 процентов, в текущем случае будет 11. И ничего не нужно обновлять по крону, никакого перебора записей нам не нужно.
    Например на 5 записей:
    запись 1 - счетчик 33
    запись 2 - счетчик 78
    запись 3 - счетчик 3
    запись 4 - счетчик 22
    запись 5 - счетчик 15
    Максимум у нас MAX = 78, рейтинг считаем по формуле счетчик зиписи * ( 100 / MAX )
    Итого при выборе максимума и любой из записей будет
    запись 1 - счетчик 33 - рейтинг 42
    запись 2 - счетчик 78 - рейтинг 100
    запись 3 - счетчик 3 - рейтинг 4
    запись 4 - счетчик 22 - рейтинг 28
    запись 5 - счетчик 15 - рейтинг 19

    Э... Данная схема будет давать не только абсолютный рейтинг, но и относительный по выбору максимума из выборки записей (извиняюсь за тавтологию). Другими словами, если записи сгруппированы как-то по тегам, то поиск максимума по счетчику с выборкой по тегу будет ранжировать записи относительно этой выборки.

    PS. Уф, вот запилил-то... Задавайте вопросы.
    Ответ написан
    3 комментария
  • CPython. Есть ли утечки памяти в самом языке?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Сам язык, интерпретатор, вроде бы не замечен в текучести. То, чем пользуюсь, twisted + cyclone, плюс еще десяток пакетов, тоже не текут. Все работает 24х7, меня устраивает.
    Ответ написан
    1 комментарий
  • Какие технологии выбрать для конкретной задачи?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Работаю (года 3 уже) с клоном торнадо, написанным под twisted - cyclone.io
    Все тоже самое как и в торнадо, плюс весь стек технологий twisted, что очень удобно. Асинхронности бояться не нужно, но мозг придется немного вывернуть. В торнадо/циклоне очень удобно работать с отложенными запросами типа comet/websockets, ну и в дополнение в этому к твистед есть библиотеки для работы с монгами и раббитами.
    Базу данных выбирайте, какую удобней, можно монго, можно постгрес. И логично хранить результаты в этой же базе. Я за монго.
    Если результат нужен только на один раз, на отдачу клиенту, то можно его вообще не хранить в базе, а просто посылать его в очередь rabbitmq, как клиент пришел за результатом - его и отдавать.
    Ответ написан
  • Как вывести цветной текст в python?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Модули вообще зло, это и правда. Лучше всего написать собственные функции и создать свой файл, назвать его termcolor.py к примеру :-)
    Ответ написан
    Комментировать
  • Какие есть альтернативы питону для консольных приложений?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Буду неловок, но www.scala-lang.org подходит под все критерии!
    Ответ написан
    3 комментария
  • На чем писать веб-сервис?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Я в свое время на перле писал, а из явы к нему цеплялся :-) через xml данные гонял, и работало это все около трех лет. На перле, так как на "исполняющих устройствах" яву поднимать отказались. Исполняющими устройствами выступали линукс-роутеры штук 60 одного провайдера. А съервером - система биллинга на яве.
    На перле что-то из cpan пользовал, на яве jakarta axis.
    Ответ написан
  • Как работать с Twitter API из Twisted?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    В догонку, есть веб-фреймворк cyclone, это переписанный на twisted tornado. В нем есть авторизация через twitter, может быть чем-то поможет. Здесь пример - cyclone.io/documentation/auth.html#twitter
    Ps. Я циклон пользую уже 3 года, как замену twisted-web.
    Ответ написан
    Комментировать
  • Как работать с Twitter API из Twisted?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А в чем проблема? В twisted можно напрямую рабоатть через getPage например. Тут тебе и деферед и запрос-ответ...
    Ответ написан
    Комментировать
  • Python: Почему не работает socket multiprocessing pool of workers?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Рекомендую посмотреть на twisted, (правда порог вхождения в него немного высок, на мой взгляд) делаете в нем ваш сервер, а обрабатываете в потоках. Для твистед куча всяких хелперов есть, например для работы с потоками (если задачи короткоживущие )- https://twistedmatrix.com/documents/current/core/h...
    или для работы с процессами (если задачи долгоживущие) - https://twistedmatrix.com/documents/current/core/h...
    и для работы с сетью в практически любых проявлениях - https://twistedmatrix.com/documents/current/core/h...
    ну и ссылка на всякие howto - https://twistedmatrix.com/documents/current/core/howto

    Спрашивайте, постараюсь ответить..
    Ответ написан
    Комментировать