Ответы пользователя по тегу Python
  • Как проверить доступность списка IP:Port из txt файла?

    @rPman
    Обязательно на python?

    с помощью nmap можно проверить работает или нет, а с помощью parallel можно запускать одновременно несколько проверок (в данном пример он будет пытаться держать запущенными 10 nmap, по завершении одного, будет брать следующий ip:port и запускать новый экземпляр)
    parallel -j10 --colsep ':' '
        nmap_result=$(nmap -p {2} {1} | grep "open")
        if [ -n "$nmap_result" ]; then
            echo "{1}:{2} - OPEN" >> results.log
        else
            echo "{1}:{2} - CLOSED" >> results.log
        fi
    ' < servers.txt
    Ответ написан
    Комментировать
  • PyTorch занимает много памяти. Как оптимизировать?

    @rPman
    Твоя видеокарта всего 4гб, откуда ты взял 7гб всего?
    Скорее всего твой датасет не помещается в память видеокарты... уменьши размер батча (вообще то его увеличивают чтобы значительно ускорить обучение, но тебе 'не до жиру') до 1.
    Перейди на fp16, это уменьшит размер весов модели (правда если она уже уменьшена, дистиллирована и прочее, это может помешать обучению)
    training_args = TrainingArguments(
        fp16=True,

    Так же можно поделить свою обучающую выборку на части и обучать сетку по ее частям (это замедляет процесс и ухудшает но все еще лучше чем на процессоре все делать)
    training_args = TrainingArguments(
        gradient_accumulation_steps=4,
    Ответ написан
    Комментировать
  • Как запустить часть кода в новом окне консоли?

    @rPman
    Для linux совсем стандартно не получится, так как для терминала не договорились о каком то умолчании (для браузера или открытия файлов от типа договорились, типа xgd-open, даже договорились об опции Terminal=true для зарегистрированных типов, но вот что бы отдельно запустить - нет), хотя бы потому что есть установки без GUI и терминал там консольный, или к примеру пользователь хочет screen а не отдельное окно.
    -----------------
    Изучил вопрос, можно одной командой узнать, что именно запускать, т.е. что установлено как терминал по умолчанию (их может быть много и отличаться будут даже на одной и того же дистрибутива в зависимости от версии, экспериментов пользователя и кучи других условий):
    update-alternatives --query x-terminal-emulator
    выдаст машиночитаемый список терминалов, первый - тот что по умолчанию:
    spoiler
    Name: x-terminal-emulator
    Link: /usr/bin/x-terminal-emulator
    Slaves:
     x-terminal-emulator.1.gz /usr/share/man/man1/x-terminal-emulator.1.gz
    Status: auto
    Best: /usr/bin/xfce4-terminal.wrapper
    Value: /usr/bin/xfce4-terminal.wrapper
    
    Alternative: /usr/bin/gnome-terminal.wrapper
    Priority: 40
    Slaves:
     x-terminal-emulator.1.gz /usr/share/man/man1/gnome-terminal.1.gz
    
    Alternative: /usr/bin/koi8rxterm
    Priority: 20
    Slaves:
     x-terminal-emulator.1.gz /usr/share/man/man1/koi8rxterm.1.gz
    
    Alternative: /usr/bin/lxterm
    Priority: 30
    Slaves:
     x-terminal-emulator.1.gz /usr/share/man/man1/lxterm.1.gz
    
    Alternative: /usr/bin/uxterm
    Priority: 20
    Slaves:
     x-terminal-emulator.1.gz /usr/share/man/man1/uxterm.1.gz
    
    Alternative: /usr/bin/xfce4-terminal.wrapper
    Priority: 40
    Slaves:
     x-terminal-emulator.1.gz /usr/share/man/man1/xfce4-terminal.1.gz
    
    Alternative: /usr/bin/xterm
    Priority: 20
    Slaves:
     x-terminal-emulator.1.gz /usr/share/man/man1/xterm.1.gz
    Тут смело бери первый встречаемый Link: и запускай с ключом:
    /строка/с/командой/запуска/терминала -e твоя_команда

    само собой в коде у тебя должен быть if от текущей ОС, для windows ты уже знаешь что делать, только осторожно, если после start будет путь в ковычках то нужно он посчитает это заголовком терминала и нужно писать вот так:
    start "заголовок окна" "путь_до_программы_с_пробелами...."


    p.s. с MACOS как-нибудь сам разберешься
    Ответ написан
    Комментировать
  • Как поставить правильную кодировку в mysql-connector-python?

    @rPman
    Кодировка базы latin не предполагает хранение русских символов, по техническим причинам, соответственно коннектор понятия не имеет как твои символы корректно переводить в utf8.

    Мало того, данные в базе как то оказались? В какой кодировке их туда помещали? Вот как помещал, так и извлекай
    Ответ написан
    1 комментарий
  • Как сделать эмуляцию клика мыши на python без задействования основного курсора?

    @rPman
    Поищи в nox аналог adb подключения для отладки приложений, с его помощью можно симулировать нажатия
    Ответ написан
    Комментировать
  • Какие существуют средства автодокументации кода Python для недокументированного кода?

    @rPman
    Топовые ИИ могут это сделать (openai o1/gpt4o, anthropic claude opus/sonet, google gemini pro, qwen 2.5 72b, llama3.2 70b,.. изучи lmsys арену lmarena.ai там можно выбрать домен задачи), у тебя не очень большой объем кода.

    Главная ошибка - пытаться одним промптом решить задачу (хотя o1 может быть близок к этому). Поиграй с промптами, твоя задача собрать описание работы твоего кода, опиши все что знаешь сам, напиши запрос, которым можно собрать информацию по функционалу, информацию по структуре кода,.. если есть время, попробуй разобрать код на структурные элементы, хотя бы 3 уровня (например модули - классы - методы) и задавать ИИ один и тот же вопрос, собрав в контексте весь код, структурное описание и в конце задавай вопрос о назначении конкретного элемента, и так повторить для каждого. Собирай ответы в один большой запрос, который уже в последствии можно передать o1 на итоговый анализ (можно и без нее, внутри o1 по уму делает именно это, но так как openai на столько закрытая что готова жестоко наказывать любого, кто попытается узнать этот алгоритм).

    Я помню мне хватило одной модели claude sonet и с десяток запросов, чтобы проанализировать исходный код чужого проекта и понять, на сколько ограничен или нет его функционал, при этом я спрашивал у модели итеративно, какой файл исходников ему нужен, в твоем случае все влезет за раз.

    Помни что чем больше размер контекстного окна, тем сильнее llm теряет информацию в нем (случайно), но повторение этой информации наоборот увеличивает ее значимость для нее, т.е. исходный код + описание этого кода облегчает для модели анализ. Есть и недостатки, даже топовые модели - переобучены (это болезнь всех нейронок), и какое-нибудь неосторожное ключеове слово или название может заставить модель думать не так как надо а как было написано в обучающих данных, тупой пример - если я хочу написать проект, работающий с api openai, и модель научена на ней, то мне было невероятно сложно заставить модель не генерировать сложный метод формирования api запроса, вместо вызова одной строчки (как я требовал в промпте) curl, прописанной в конфиге... но как только я убрал везде упоминание openai и подробно описал требования, так все прошло на ура. Поэтому, экспериментируй, изучай, перепроверяй все что тебе сгенерирует ИИ. Современный ИИ это не замена, а очень мощный инструмент помощник, который возьмет на себя скучную рутину.

    p.s. рекомендую лайфхак
    когда тебе нужен короткий ответ на твой вопрос, следуй следующему сценарию (особенно если используешь слабые модели, но работает для нетиповых задач и у топовых), в виде чат-сессии:
    {твой вопрос}
    {добавь текст: 'глубоко вдохни и подумай шаг за шагом'/'take a deep breath and think step by step'}
    [получи ответ, читать его не обязательно но оставь его в контекстном окне]
    {задай вопрос: 'а если подумать еще раз'/'but if you think about it again'}
    [получи еще один ответ, читать его так же не обязательно но оставь его в контекстном окне]
    {задай окончательный вопрос: 'Итак, какой будет твой ответ?'/'So, what will be your answer?', тут можно определить, в каком виде нужен ответ}
    [получи окончательный ответ]

    По поводу 'take a deep breath' была исследовательская работа, которая показала что эта просьба повышает качество моделей очень значительно, а мои исследования показали что просьба 'подумать еще раз' позволяет модели сомневаться в предыдущем тексте и искать альтернативные варианты, обычно это исправляет ошибки, если это в принципе возможно.

    Еще странный совет - попробуй решить задачу на разных языках, не только на английском, сравни ответ, тебя может это удивить.
    Ответ написан
    7 комментариев
  • Как правильно использовать python скрипт через PHP backend?

    @rPman
    В общем случае технологии называются Interprocess communication.

    Изначально предлагались (php/python) механизмы очереди сообщений, shared memory и semaphores, как минимум на их основе делают высокоуровневые библиотеки по работе с сообщениями (и используют именно их, а не низкоуровневые, но знать про них обязан каждый, чтобы понимать недостатки)

    Второе и самое логичное, использовать socket-ы, как unix socket или pipes, так и tcp. Многие не заморачиваются, а поднимают полноценный асинхронный http сервер и организуют общение между приложениями по http или лучше websocket протоколу, так как это позволяет распределить приложения уже не в пределах одного сервера, а в сети, что дает очень высокую гибкость, но ценой значительных накладных расходов на сериализацию.

    Правда если используются разные языки программирования, в которых разные форматы для структур данных, так же придется сериализовать структуры, т.е. память копировать и кодировать/декодировать.
    Ответ написан
    2 комментария
  • Как пололучить int8 из байта?

    @rPman
    пакет struct метод unpack
    data=b'\xc8'
    struct.unpack('b', data)[0]

    data типа bytes, можно считывать из файла, открывая как бинарный файл, флаги 'rb'
    Ответ написан
    1 комментарий
  • Как по SSH Windows запустить скрипт на рабочем столе?

    @rPman
    ssh запускается как служба, и не имеет доступа к консоли текущего пользователя.

    Правильно - создать задачу в task scheduler (планировщик задач), без условий (тригеры), указав пользователя с его паролем и отметить чекбоксик интерактивности. А в момент, когда нужно запустить эту задачу, запускать ее с помощью schtasks /run
    Ответ написан
    Комментировать
  • Как добавить в установщик своей программы Opera?

    @rPman
    Любой установочный пакет (правильно собранный) в формате .msi (а часто и .exe но по своим стандартам) позволяет запустить установку без запроса пользователя, занести этот .exe приложение с ключом /? И получишь подробную справку.

    Для .msi посмотри эту статью
    Ответ написан
  • Как определить область в потоке видео и среагировать на обнаружение?

    @rPman
    Если в этом месте других сообщений не выводится, то все решается простой проверкой цвета нескольких пикселов, в твоем случае их будет 2-3шт, для надежности смотри ну 5.

    Подбери такие пикселы, чтобы их комбинация белая/не белая была уникальной для каждого случая... цвет пиксела бери 'на интервале'

    Твоя задача вообще решается анализом небольшого количества пикселов, потому что интересующие тебя объекты имеют не меняющийся цвет.

    p.s. вот если бы вместо белого цвета использовался постоянно меняющийся, было бы сложнее, но все равно решаемо, просто больше пикселов брать и сравнивать цвет с ними
    Ответ написан
  • У меня скрипт для рассылки друзьям на Python, хочу отправлять сообщения по номеру телефона, но получается только по username, как решить?

    @rPman
    По номеру телефона можно общаться только если вы друг у друга в контактах телефона.

    Иначе - ты бы перебирал номера телефонов (собственно одно время так и делали, добавляя по 10к в контакты себе) и спамил бы спамил, хорошо так не получится.
    Ответ написан
  • Как вывести список всех компьютеров в пределах диапазона из Active Directory?

    @rPman
    Лучше использовать для этого штатные утилиты командной строки или скрипт powershell (код будет проще), например
    $ip = "192.168.1.1"
    
    # получить dns имя по ip
    [System.Net.Dns]::GetHostEntry($ip).HostName
    
    # получить операционную систему по ip
    # права у текущего пользователя должны быть достаточными
    $creds = Get-Credential
    
    Invoke-Command -ComputerName $ip -Credential $creds {
        Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, Version
    }

    p.s. по уму wmi есть и для python но код точно будет многословным (попроси chatgpt он тебе нарисует или нагугли)
    p.s.
    wmi
    или ldap3
    Ответ написан
    Комментировать
  • Какие пакеты лучше использовать для написания программы?

    @rPman
    Управление удаленным браузером - selenium или самому использовать механим управления браузером по сети (у firefox это marionette, у хромиум кажется через --remote-debugging-port свой, собственно драйвера selemium их и используют, унифицируя)
    Ответ написан
  • Почему скорость работы асинхронного кода снижается?

    @rPman
    Скажи, о каких скоростях идет до и после повышения количества доменов?
    Что показывает нагрузка на процессор (асинхронный код использует в основном только одно ядро).

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

    И главный вопрос, а с чего ты взял что сайт ifconfig.me будет отвечать тебе с бесконечной скоростью? Почти наверняка ты упираешься в какие то лимиты и тебе понижают количество запросов в секунду, через некоторое время лимит сбрасывается и твои тесты с малым количеством запросов работают быстрее.
    Ответ написан
  • Как убрать задержку в WebSockets?

    @rPman
    Это не вебсокет вносит задержки, а телеграм. Задержки в рассылке сообщений клиентам у него доходят до нескольких минут, это не исправить, клиенты должны сами подключаться к тому же серверу что и бот, управлять этим невозможно.
    Ответ написан
    Комментировать
  • Как генерировать файлы и записывать в них информацию в цикле?

    @rPman
    open в качестве первого параметра принимает имя файла, сейчас у тебя там строка константа, замени ее на код, который будет формировать имя файла, например из чисел x1...x5, соответственно передавай эти числа в функцию, в которой этот open вызывается
    Ответ написан
  • Существует ли таймер которым можно управлять с другого компьютера?

    @rPman
    Слишком 'простая' задача, чтобы для нее был готовый инструмент, может только как часть бОльшего...

    Напиши сам или закажи у других. Современные телевизоры уже давно умные, в крайнем случае можно приобрести у китайцев за 1-2т.р. мини ПК в формате hdmi-stick (чуть больше usb флешки) так же почти любой смартфон может транслировать изображение на TV по wifi. Т.е. 'запустить браузер на TV' не проблема. Удаленное управление - вопрос того от куда и как именно нужно это делать.
    Ответ написан
    Комментировать
  • Selenium не видит мой webdriver,что делать?

    @rPman
    С высокой вероятностью причина - русские буквы в пути.

    Размести драйвер в другом каталоге, не содержащем русские буквы (можно создать символическую ссылку на каталог в другом месте)
    Ответ написан
  • Как вывод команды help в терминал передать в переменную?

    @rPman
    подмени stdout на свою строку на время работы help и dir и потом обратно, с помощью io
    import io
    import sys
    # Create a text buffer object
    buffer = io.StringIO()
    # Redirect stdout to the buffer
    sys.stdout = buffer
    # Call the help function
    help(object)
    # Reset stdout to default
    sys.stdout = sys.__stdout__
    # Get the string value from the buffer
    help_in_string_format = buffer.getvalue()
    # You can now use the string variable as required.
    print(help_in_string_format)

    p.s. очень удобно пользоваться chatgpt когда задачи простые и ты понимаешь как их решать, он берет на себя кучу скучной и не интересной работы
    Ответ написан