Ответы пользователя по тегу Python
  • Python, postgress, pandas - куда утекает память?

    @Arlekcangp
    Разработчик, Лид, Архитектор ПО
    Я не специалист по пайтону, но присматриваюсь и ваш код меня заинтересовал. Немного погуглив я нашел такой похожий вопрос на SO ( https://stackoverflow.com/questions/39100971/how-d... ), но c более простым кодом:
    import pandas
    df = pandas.read_csv('large_txt_file.txt')
    del df

    Уже этого достаточно, что бы память не возвращалась в ОС. Автор вопроса подозревал Pandas, но как пояснили в ответах, это особенность самого пайтона:
    Reducing memory usage in Python is difficult, because Python does not actually release memory back to the operating system. If you delete objects, then the memory is available to new Python objects, but not free()'d back to the system (see this question).

    Т е если вы смотрите количество используемой процессом памяти, то оно будет только увеличиваться. Первое, что я бы попробовал, это поменять ваш код так:
    for station in config.STATIONS_LIST:
        sql_query = f"select * from table where  where station = '{station}'"
        df = pd.read_sql(sql_query, con=connection_pg)
        filename = f'data_{station}'
        filename_with_path = os.path.join(config.OUTPUT_PATH, filename)
        compression_options = dict(method='zip', archive_name=f'{filename}.csv')
        df.to_csv(f'{filename_with_path}.zip', compression=compression_options, index=False)
        <b>df = ' '</b>
        gc.collect()

    Т е не удалять переменную, а переприсвоить. Некоторые говорят, что это помогает (если честно, мне в такое с трудом верится, но я не знаю пайтона) Среди других рекомендаций: загружать данные меньшими порциями и офлоудить работу другому процессу, который затем убивается и память освобождается ОС. (на мой взгляд способ хороший, хоть и не слишком архитектурно-правильный, но гарантировано добавит стабильности и застрахует даже от будущих утечек, если они появятся либо в вашем коде либо в новых версиях библиотек)
    Другой вопрос, почему это увеличение не останавливается. Если это всё дело происходит на linux то я бы попробовал ограничить пайтону память (первое что нагуглилось: https://www.geeksforgeeks.org/python-how-to-put-li...) и посмотрел будет ли при этом интерпретатор умирать по причине недостатка памяти. Если будет, то на SO рекомендовали такое средство: https://mg.pov.lt/objgraph/ Этим можно посмотреть что именно потребляет память.
    Ответ написан
    5 комментариев
  • Существует ли зрение для робота без программирования?

    @Arlekcangp
    Разработчик, Лид, Архитектор ПО
    ну это ж бред в наше время, тратить ресурсы на такие базовые, по моему, вещи. Сам я, если что, хеловорлд на питоне или баше, ну может чуть больше.

    В этом мире вообще бреда много. И в том числе огромное количество закрытых корпоративных разработок , которые регулярно "переизобретаются" другими корпорациями. И, мало того, подаются как новое супер-пупер-революционное. И ещё есть при этом риск "наступить" на чей-нибудь патент, как на мину... Серьёзное обсуждение этой ситуации и почему она сложилась и при каких условиях можно это преодолеть - серьёзный вопрос, который затрагивает политические, социальные и даже философские аспекты, в которые тут не буду вдаваться.

    решения, позволяющие, условно, роботу на колесиках с Raspberry Pi и подключенной к нему камерой ездить по квартире и не врезаться, объезжать препятствия, видеть (пусть будет выделенный из окружения значок) свою зарядную станцию и заезжать на нее...

    Не долгое вспоминание и гугление дало следующие:
    1. ROS (Robot operating system):
    открытая платформа которую предполагается дополнять модулями для описанного в этом
    абзаце.
    - https://www.ros.org/ - офф сайт
    - https://en.wikipedia.org/wiki/Robot_Operating_System - википедия для быстрого ознакомления
    2. OpenVINO: Некая библиотека на основе нейронных сетей для частых задач по зрению роботов.
    - https://www.intel.com/content/www/us/en/developer/... Офф сайт
    - https://habr.com/ru/company/intel/blog/546438/ Статья на хабре (от студентов Не стоит многого ожидать)
    Опять же для быстрого ознакомления.
    - https://medium.com/the-research-nest/computer-visi... - тут кроме OpenVINO
    похожие проекты
    3. интеграция первого и второго.
    - https://github.com/intel/ros_openvino_toolkit

    ...иметь возможность малыми усилиями дополнять функционал ("робот, та херня, которую ты объехал заехав в комнату называется мяч, прикати его мне" ну как пример, можно проще).

    Вот это, боюсь, мало реально. Уж точно не силами Raspberry. Тут может понадобиться подкрепить усилия малыша тихо шумящим на заднем фоне супер-компьютером. Не из топ-500 конечно, но достаточно мощным, т к пока что с адаптацией нейросетей под новые задачи всё грустно - это делает человек с помощью перестройки архитектуры и обучения по новой (one-short learning конечно круто, но решает более простую задачу чем описанная). А как их связать с классическими алгоритмами понимания, логики и планирования - я даже работ таких не видел (они наверняка есть, но маркетологи о них не кричат, как об очередном говно-авто-художнике какого-нибудь сбера...)
    PS Я не сильно большой специалист в роботах, поэтому возможно это очевидные вещи или вообще не на что не годные проекты. Но по крайней мере это то, что есть в open source.
    Ответ написан
    Комментировать
  • Как обойти систему верификации при автоматизированной регистрации аккаунта?

    @Arlekcangp
    Разработчик, Лид, Архитектор ПО
    можно также автоматически заходить на указанную почту, в которую пришло письмо с кодом, парсить его оттуда и вставлять в поле при регистрации

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