Ответы пользователя по тегу Программирование
  • Как выполнить обмен между двумя высоконагружеными сервисами, если их количестов соеденений больше 65556?

    @lega
    с помощью протокола http
    Нет смысла в таком кол-ве портов, переходите на keep-alive (напр zmq), и 1-10 портов хватит чтобы загрузить на 100% железо/сеть
    Ответ написан
    Комментировать
  • Как вы изучаете новый язык программирования: книги, видеокурсы что-то еще?

    @lega
    1) Посмотреть пару вводных роликов, чтобы знать как коней запрягать
    2) Ознакомиться с синтаксисом
    3) Проштудировать top вопросов на stackoverflow по данной технологии, чтобы не было новичковых вопросов
    4) Начать делать проект, и там уже задавать конкретные вопросы по ходу действия
    Ответ написан
    Комментировать
  • Как лучше хранить данные о трафике в БД?

    @lega
    Хотите экономно? "Сворачивайте" на ходу и раскладывайте готовый результат по группам (отчетам).
    Ответ написан
    Комментировать
  • Многопоточность в python?

    @lega
    Для 25 ссылок можно и на потоках сделать, даже работать может быстрее если домены разные.
    asyncio - это если что-то серьезней или просто охота покопаться в asyncio
    Ответ написан
    Комментировать
  • Вся информация в компьютере — это нули и единицы?

    @lega
    Да, можно аналогию привести, что человек на низком уровне состоит из атомов, нейтронов и т.п.

    Дополню:
    это на самом деле это процессор обрабатывает длинную последовательность нулей и единиц
    Если посмотреть глубже, то не обрабатывает, а "просто" пересылает из одного места в другое.
    Ответ написан
    Комментировать
  • Область применения асинхронного программирования?

    @lega
    Асинхронный код позволяет выполнять код параллельно в одном потоке, итого профит в том что экономится память т.к. каждый поток требует память под себя. По сути все.
    Итого это позволяет запускать 1Млн параллельных задач и более, экономя память.

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

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

    Все бы нечего, но проблема в том что сложность асинхронного кода гораздо выше в разных аспектах, итого времени может тратится в разы больше (год на проект вместо 4 мес например).

    Поэтому асинхронность применять лучше там где это оправдано (для веб-сокетов), а весь остальной проект делать "классически". А сейчас из-за моды некоторые пытаются целиком все асинхронным кодом делать, потом иногда по прошествии года/двух появляются статьи о том что асинхронность не стоит того, а их в комментариях обливают, что мол не умеете готовить.

    Более разумным видится использование файберов/корутин, но эту тему не сильно развивают.
    Ответ написан
    4 комментария
  • CRON как лучше сделать?

    @lega
    1. Сделать атомарность, транзакции, если их нет, то другими способами, например если это файл, то сделать результирующий файл рядом и если все ок, то заменить (переименовать) исходный.
    2. Помечать обработанные строки, в самой строке или с наружи.
    3. Помечать текущую строку внутри/или снаружи, если процесс имеет "строгую" последовательность.

    для каждой записи(их милион) добавлять +1

    Конкретно эта задача решается не так, строки можно не обновлять совсем:
    1) можно вычислять значение от даты создания строки
    2) можно делать +1 всего лишь на одно значение, а во всех строках будет хранится только сдвиг
    Ответ написан
    Комментировать
  • Какие задачи решает реактивное программирование?

    @lega
    wikipedia говорит - в общем распространение изменений, как в формулах exсel таблиц

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

    Если реализовывать такую таблицу в императивном стиле то после изменения одной ячейки нужно обходить все остальные ячейки и делать их пересчет (т.к. конечная ячейка сама тянет данные от которых зависит), после этого нужно делать ещё проход и ещё т.к. если более поздние ячейки изменяют более ранние ячейки, то ячейки зависимые от более ранних будут не актуальны. Вообщем это большая нагрузка и все будет тормозить в отличие от "точенного" изменения в реактивном стиле.
    Ответ написан
    Комментировать
  • В чем плюс ассинхронного программирования?

    @lega
    В чем плюс ассинхронного программирования?

    Ни в чем, это просто необходимость для некоторых платформ (где нужно обруливать io блокировки) которые не умеют файберы/корутины/горутины и т.п. (т.е. синхронный стиль с неблокирующим io).
    Ответ написан
    Комментировать
  • Где найти большие структурированные данные?

    @lega
    Ответ написан
    Комментировать
  • Как увеличить скорость скрипта tornado python?

    @lega
    По сути там 4 вещи которые могут "тормозить": cpu, диск, сеть, сервера (откуда скачивается).

    1) Посмотрите не загружено ли одно ядро на 100% (речь не про весь процессор), если есть 100% то нужно "форкать".
    2) Отключите сохранение:
    def data_process(data, url, headers):
        pass
    Если при этом cpu < 100% а сеть не загружена по максимуму - значит (промежуточные) сервера отдают медленно.
    Ответ написан
  • Что эффективнее для небольшого приложения: C++ или Python?

    @lega
    Поддержу Сергей Протько, скорости питона хватает в 98% случаев, остальные 2% добиваются на Си, Го и пр. Таким образом сохраняется скорость разработки и производительность.
    Ответ написан