Ответы пользователя по тегу Python
  • Python не выходит из цикла while, что делать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется я понимаю в чем проблема автора. Socket - это не файл.
    Это просто стриминговый протокол по которому можно ждать данных
    бесконечно. Потому что никакого маркера конца нету.

    Тут нужно договориться что либо сервер закрывает соединение после отдачи файла.
    Либо клиент сам отваливается когда детектирует либо принятие числа байтов
    либо специальный байт маркер EOT (как договоритесь).
    Ответ написан
    Комментировать
  • Как быстро и легко зашифровать трафик?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Коробочное решение шифрования - это nginx

    https://nginx.org/en/
    Ответ написан
    Комментировать
  • Как принять или как правильно разрабатывать проекты под Python в плане архитектуры?

    mayton2019
    @mayton2019
    Bigdata Engineer
    То что автор перечислил - это best practices. .

    Архитектурный вопрос например - это инвалидация кеша.
    Протоколы кворума. Консистентность данных в распределенной системе.
    Перформанс в сложной системе. Это тоже архитектура.
    Ответ написан
    Комментировать
  • Как узнать, что диапазон находится в пределах нормы отклонений?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В науке и мат-статистике это называется процентиль (percentile).
    Многие математические пакеты и SQL диалекты имеют встроенную функцию
    для расчета П. Медиана и квартиль - это просто частные случаи процентиля.

    В твоем случае 60-й процентиль не более чем какая-то величина. Но тебе надо мерять
    не сверху а сверху и снизу. И тут надо немного подумать.

    По поводу колебаний. Если я правильно понимаю то 20 сек, 22 сек, 19 сек, 18 сек, 23 сек, 24 сек
    это выборка, а колебания - это разности между соседями. Тоесть

    2, -3, -1, 5, 1

    ?
    Ответ написан
  • Как исправить ошибку в python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В таблице users уже есть пользователь с таким id. Бери следующий id.
    Ответ написан
  • Питон,нейросеть, алгоритм выхода из лабиринта?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Автор ищет функцию следующего вида.
    def (pointA : point, pointB : point, figures : list) -> list

    На вход приходит например точка А. Это где мы стоим. И точка Б - это выход из лабиринта.
    Это впрочем мое видение задачи. Можно и изменить. И список фигур (полигоны) третьим
    аргументом. И результат - список координат - траектория движения. Как выбежать из лабиринта.
    Если решения не существует (например мы огородили точку А кольцом камней) то функция
    должна вернуть например None.

    В классическом варианте движение из точки А в точку Б в лабиринте реализуется на клеточном
    поле алгоримом Волны или Волновым алгоримом.
    https://habr.com/en/search/?target_type=posts&orde...]

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

    По поводу нейросетей. Тема модная и не сходит с топ обсуждений.

    Я предлагаю вместо нейросетевого решения обсудить кейсы когда решения не существует
    а НС об этом не знает или не умеет такое детектировать. Если мы будем подмахивать нейросети
    и подсовывать ей заведомо легкие решение (нет сплошной стены из фигур вокруг точки А например).
    то это решение будет туфтой. И также туфтой будет нейросеть сколь бы умно она не выглядела.

    Почему я решил пойти от негативного кейса? Мне кажется это - вопрос интересный и дискуссионный.
    Это как доказательство теоремы. В случае алгоритма волны - это возможно. Если волна заполнила
    все пространство вокруг А и не достигла Б - значит решения нет.

    Кроме нейросетей есть еще комбинирование рандомных решений с улучшениями (генетические
    алгоритмы)
    . С точки зрения лабиртнта это выглядит как построение большого количества
    случайных путей из точки А в точку Б с отбором тех путей которые
    - которые короче другие
    - которые не пересекают края фигур

    Для генетики признаком невозможности найти решение будет скорее всего количество эпох
    после которых мы так и не получили маршрут от А до Б без наезда на зеленые фигурки.
    Ответ написан
    Комментировать
  • Как исправить аномальное снижение производительности при импорте модуля в Python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Создай 2 незвависимых процесса. Один пускай работает без ultralytics и передает
    результаты следующему процессу через файлы который уже в свою очередь
    будет подключать ultralytics.

    Современные стеки технологий очень сложны и забагованы и их иногда проще не фиксить
    а изолировать и просто принять как данность что они вот так вот работают.
    Ответ написан
    1 комментарий
  • Какой аналог CryptoJS.AES.encrypt от js?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Симметричный шифр типа AES параметризируется многими настройками. В частности
    - длина ключа и длина блока. Например 128, 192, 256
    - вектором инициализации. Это что-то вроде виртуального первого блока. IV.
    - режимом сцепления блоков (ECB, CFB, CBC ... e.t.c.) в данном случае исходник на Python явным образом нам указывает и режим ECB является вобщем-то самым плохим и нежелательным для нужд криптографии.
    (на этот режим а в JS берется какое-то умолчание).
    - если мы генерируем ключ на основе парольной фразы то нам должен быть известен этот метод. Это не
    всегда преобразование символов в UTF-8. Могут быть нюансы.

    Для выравнивания хвоста открытого текста по границе блока есть еще режимы padding-a.
    Подозреваю что там - несколько вариантов может быть. Это - тоже надо прояснить.

    Поэтому автор должен взять все параметры. Привести их к общему знаменателю и убрать все
    defaults на явные параметры чтоб было все одинаково. Тогда и результат дешифрования будет
    ожидаемый.
    Ответ написан
    Комментировать
  • Вывод битых символов кириллицы в консоли?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Автор покажи что у тебя показывает
    chcp
    или
    echo $LANG
    И проверь что кодовая страница текстового файла совпадает с ожидаемым.
    Вобщем это скорее всего и будет ответ на твой вопрос.
    Ответ написан
  • Как в numpy максимально быстро изменить структуру данных в массиве?

    mayton2019
    @mayton2019
    Bigdata Engineer
    CUDA это хорошо. Вот еще Питончик. Прошу прощения за scala-style. Рука машинально typetags пишет...
    from PIL import Image
    import numpy as np
    
    img : PIL.PngImagePlugin.PngImageFile = Image.open("pic-001.png")
    
    if img.mode != 'RGB':
      img = img.convert('RGB')
    
    img_data : np.ndarray = np.array(img)
    
    width : int  = img_data.shape[0]
    height : int = img_data.shape[1]
    
    dest_data : np.ndarray = np.zeros((width, height), dtype=np.uint32)
    
    for y in range(0, height):
      for x in range(0, width):
        pixel : np.ndarray = img_data[x,y]
        color : int = pixel[0] << 16 + pixel[1] << 8 + pixel[2]
        dest_data[x,y] = color
    Ответ написан
    Комментировать
  • Может ли python конфликтовать с amd?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Предположительно у тебя минорные версии Питона и библиотек прыгнули вверх после переустановки.

    Для стабилизации environment в питонах есть 2 инструмента.
    - conda https://anaconda.org/anaconda/conda
    - venv https://python.land/virtual-environments/virtualenv

    Оба хорошие. Воспользуйся ими.
    Ответ написан
  • Как увеличить производительность проекта на python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Когда начались тормоза, сразу добавил новый инстанс приложения, производительность практически удвоилась, но позже и второй инстанс начал задыхаться, добавил третий и производительность не увеличилась. Запустил профилировщик, увидел, что все упирается в бд, на ум сразу пришло вынести эту часть в микросервис, а основной монолит будет обращаться к этому микросервису, но опять же проблема, а что будет, когда и этот микросервис начнет задыхаться?

    Вопрос интересно звучит. Как будто - куда "соломки" положить чтоб мягче падать.

    Пускай планом Б у тебя будет просто поднятие еще одной БД или нескольких БД с балансировкой.
    Если 1 база не успевает отработать поток, по пол-потока или треть она успеет.

    Попробуй мемоизировать результат ответа от БД. Положи в Redis. Это на тот случай если есть
    горячие комбинации парамтеров запроса и есть вероятность что клиент их затребует несколько раз.

    Подскажите, что можно предпринять (если менять архитектуру, то на какую)? Пожалуйста, подробнее и более простым языком (для тупых).

    На данный момент ничего менять не надо. Т.к. непонятно в какую сторону тебе двигаться.
    Однозначно тебе нужен хороший специалист по БД. Он должен уметь смотреть execution
    plans и давать советы по тому какой сет индексов построить. Иногда помогает переход
    в архитектуру Key-Value dbms (если это только не противоречит бизнесу). Поэтому я не скажу
    что это совет. Это скорее мысль, о чем можно говорить с бизнесом.
    Ответ написан
    Комментировать
  • Как создать exe приложение на macOS?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Python исторически не создавался для компилляции в бинарники.

    Попробуй реализуй свою задачу на языке Swift. Это как раз для Мак-ов язык и для компилляции.
    Ответ написан
    Комментировать
  • Как использовать Tracemalloc для оптимизации использования памяти?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вообще не факт что дело в Питоне. Вместе с ботом запускается SQLite. Как часть процесса.
    База сложным образом кешируется и обладает свойством забирать столько сколько надо
    с учетом настроек. Я-бы посмотрел настройки SQLite.
    Ответ написан
  • Как можно ускорить Скачивание с помощью telethon?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если под капотом "телетхона" работает http-протокол то можно качать в несколько сеансов.
    Только для каждого задать свой уникальный range. На выходе будет несколько кусочков
    файла которые можно склеить в один файл.

    Тут пример https://developer.mozilla.org/en-US/docs/Web/HTTP/...
    Ответ написан
    Комментировать
  • Как перехватить исключение pyo3_runtime.PanicException при использовании pandas и calamine?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если сторонняя библиотека крашит python процесс то вам просто надо запускать
    еще один процесс-камикадзе (excel-kamikadze.py), который даже если падает - не оказывает влияние на основной.
    Эта техника используется часто в акторах Erlang/OTP.

    Как получить данные назад из excel-kamikadze.py. Тут - много вариантов. Можно создавать временный
    файл (XML/JSON куда передавать нужные результаты парсинга). Можно выдать их в поток STDOUT.

    import subprocess
    
    result = subprocess.run(["/usr/bin/python3", "kamikadze.py"], stdout=subprocess.PIPE) 
    output = result.stdout.decode("utf-8")
    Ответ написан
    Комментировать
  • Почему не выводит результат кода на рекурсию для ЕГЭ 16 задания?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Данная формула
    f(2024) + f(2023)) / f(2022))
    написана правильно (as is) но является как-бы троллингом вычислительной системы.

    В числителе и знаменателе считаются факториалы чисел с разрядностью больше чем RSA ключи.
    От десятки и выше каждый множитель добавляет 2 десятичных знака к проивзедению и в конце
    где вы ведете учет последних множителей идут 2000*2001*2002 и так далее. Каждое умножение
    добавляет 3 нуля. Миллионы-миллиарды-триллионы и так далее.

    Rsa97 пишет про это в комментарии. Собственно он и ответил на вопрос как это считать. Сократив
    ненужные вычисления.

    Python-у очень тяжело считать такие числа. Это - как майнинг. И самое смешное что математически,
    формула очень сильно упрощается если по закону сокращения дробей.
    Ответ написан
    Комментировать
  • Pandas умеет чертить границы ячеек в Excel?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Посмотрите библиотеку https://pypi.org/project/openpyxl/
    Ответ написан
    Комментировать