Задать вопрос
  • Как из дочернего процесса вытащить данные?

    Vindicar
    @Vindicar
    RTFM!
    Попробуй использовать Pool.map().
    Пример его использования буквально в самом начале официальной документации.
    Ответ написан
    2 комментария
  • Тормозит Ubuntu, не хватает оперативной памяти?

    Vindicar
    @Vindicar
    RTFM!
    ЕМНИП, Linux активно использует оперативку для кэширования файловых операций. Эти буферы имеют низкий приоритет, и если приложение запросит память - будут сброшены на диск и высвобождены. Так что на потребление памяти нужно смотреть с осторожностью, не всегда занятая память - признак перегрузки.
    Ответ написан
    1 комментарий
  • Можно ли "фоном" запустить обработку директории с изображениями?

    Vindicar
    @Vindicar
    RTFM!
    multiprocessing. Но имей ввиду, что это поможет только на многоядреной машине, и то условно. Нужно произвести замеры, как часто ты делаешь скриншоты, и как долго происходит их обработка. Если обработка длится в 2-3 раза дольше чем поступление новых скриншотов, то можно выкрутиться. Если нет, то нужно оптимизировать обработку.
    Ответ написан
    Комментировать
  • Как запретить пользоваталям в сети использовать VPN? как блокировать соединения?

    Vindicar
    @Vindicar
    RTFM!
    Тут нужен DPI, но вообще если есть разрешённые типы трафика во внешнюю сеть, то гипотетически можно провесить туннель. Тот же chisel позволяет заворачивать TCP-трафик в HTTPS-туннель к своему серверу. Так что нужен не просто DPI, а полноценный MitM.

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

    Vindicar
    @Vindicar
    RTFM!
    Либо ник в кавычки, либо сделай mention вместо просто ника, это тоже работает.
    Ответ написан
    Комментировать
  • Почему пишет NameError: name 'message' is not defined?

    Vindicar
    @Vindicar
    RTFM!
    def callback_inline(call):
    У функции нет ни параметра message, ни локальной переменной message. А дальше у тебя идёт обращение к такой переменной по имени message - message.chat.id.
    Ответ написан
  • Как сделать чтобы бот правильно распознал цифры на скриншоте?

    Vindicar
    @Vindicar
    RTFM!
    Сделай столько скриншотов, чтобы был полный набор цифр. Вытащи каждую цифру отдельно (если можешь определить их позицию), потом просто пробуй вычитать из изображения неизвестной цифры эталонный образец каждой цифры. Где разница ближе всего к 0, там и правильный ответ.
    Ответ написан
    Комментировать
  • Есть ли способ отследить состояние Windows приложения из Python?

    Vindicar
    @Vindicar
    RTFM!
    Есть ещё извращённый способ - использовать WinAPI, чтобы найти в окне приложения тот элемент управления, на котором рендерится сообщение о завершении работы, и периодически опрашивать его текст.
    Смотри функции API EnumWindows(), EnumChildWindows() и GetWindowText().
    Чтобы вызывать API функции из скрипта на питоне - стандартный модуль ctypes в помощь.
    Ответ написан
    Комментировать
  • Каким способом удалить шум на картинке?

    Vindicar
    @Vindicar
    RTFM!
    Максимум что тут можно сделать - пройтись алгоритмом connected component и отсеять все компоненты, у которых слишком маленькая площадь. Но и это повредит текст, например, удалит точки на i.
    Ответ написан
    Комментировать
  • Какой декоратор отработал @dp.callback_query_handler или @dp.message_handler?

    Vindicar
    @Vindicar
    RTFM!
    Сделать отдельную функцию, чтобы у каждой был свой декоратор. Общую часть можно вынести в третью функцию, без декоратора, и вызывать её самостоятельно.
    Ответ написан
    Комментировать
  • Выдает ошибку "TypeError: 'module' object is not subscriptable" что делать?

    Vindicar
    @Vindicar
    RTFM!
    Что такое config? Судя по сообщению об ошибке, это модуль, т.е. где-то выше у тебя import config. Что ты пытался этим сделать?

    Ну и да, пусть бот проверяет id отправителя на совпадение с твоим.
    Ответ написан
  • Почему сообщение высылается не в тот канал в который нужно?

    Vindicar
    @Vindicar
    RTFM!
    > ctx.send
    И впрямь, почему? Может, потому что ты говоришь боту отправить его туда?
    Если надо отправлять в channel, то channel.send().
    Ответ написан
    Комментировать
  • Команда временного мьюта не работает - в чем проблема?

    Vindicar
    @Vindicar
    RTFM!
    Ну во-первых, imported but unused - это предупреждение, а не ошибка. Учи разницу. Тебе IDE указывает, что импортированный модуль time не используется, а переменная time тут ни причём.
    Во-вторых, ты указал *, time: int, reason=None - discord.py рекомендует указываь не более одного параметра после *, это означает "всё, что дальше - записать в этот параметр, не разбивая на слова". Если параметров более одного, то не очень понятно, что куда записывать.
    В-третьих, приводи полный текст ошибки, а также вставь отладочный print() в начало функции, чтобы понять, запускается ли она вообще.
    В-последних, if можно здорово сократить, вынеся общие части "за скобки".
    Ответ написан
    Комментировать
  • Как запустить python код, при переходе на сайт?

    Vindicar
    @Vindicar
    RTFM!
    Запускать питон код на твоём сервере? Напиши маленький сервис на flask или django, и обращайся к нему с помощью JS на веб-странице. Разумеется, коду будет доступен только сервер, на котором он исполняется, а не машина пользователя.

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

    Vindicar
    @Vindicar
    RTFM!
    Я не работал с PyQT, но предложу догадку: ты создал новый объект QPixmap(), а как о нём узнает твоё окно, точнее, его родитель QMainWindow?
    Ответ написан
    Комментировать
  • Как объеденить Ubuntu и windows 10 в локальную сеть?

    Vindicar
    @Vindicar
    RTFM!
    Вопрос: доступ по SSH откуда?
    Если с ноута на стационарный комп, то проблем должно быть минимум:
    1. Убедиться, что трафик ходит между компом и ноутом (интерфейсы подняты, адреса и подсети выбраны корректно).
    2. Убедиться, что SSH сервер слушает соответствующий адрес (ну или слушает 0.0.0.0).
    Роутер в этой схеме никак не участвует.

    Если же нужен SSH доступ изнутри сети роутера, но не с ноута, то тут дело сложнее. Помимо вышеуказанного:
    3. Ноут должен либо делать port forwarding на стационарный комп, либо делать bridge для двух сетей - wi fi и кабель.

    А если нужен доступ извне сети роутера, то дело ещё усложняется:
    4. Роутеру нужен внешний IP, на который можно постучаться.
    5. Роутер должен делать port forwarding для выбранного порта для SSH на ноут.

    Без конкретики (точная решаемая задача, схема сети, конфиги приложений, список проброшенных портов) тут ничего не посоветовать.
    Ответ написан
    Комментировать
  • Как работает бинарный оператор & в python?

    Vindicar
    @Vindicar
    RTFM!
    Этот оператор может быть перегружен, а потому имеет разную семантику для разных типов данных.
    Для множеств этот оператор возвращает их пересечение.
    Ты можешь добавить поддержку этого оператора в свой класс, объявив магический метод __and__().
    Ответ написан
    2 комментария
  • Как найти геометрическую прогрессию в списке?

    Vindicar
    @Vindicar
    RTFM!
    Составь новый список, в котором каждый элемент - это частное* двух соседних элементов исходного списка.
    Если в новом списке будет несколько одинаковых** элементов подряд, то в исходном списке соответствующие элементы формируют геометрическую прогрессию.

    *Не забываем про деление на ноль! Может потребоваться отдельная проверка.

    **Не забывай про ограниченную точность чисел с плавающей точкой. Сравнивать такие числа лучше не как обычно, a == b, а с помощью конструкции вида abs(a - b) <= E, где ты задаёшь в E желаемую точность (например, 0.000001).
    Ответ написан
    Комментировать
  • Почему код выдает ошибку?

    Vindicar
    @Vindicar
    RTFM!
    Передаваемые значения для execute() должны быть завёрнуты в кортеж, т.е.
    execute('INSERT INTO foo VALUES (%s, %s)', ('bar', 'baz'))

    Ну и да, проверь синтаксис SQL-запроса.
    Ответ написан
    Комментировать
  • Как написать следующую логику на питоне?

    Vindicar
    @Vindicar
    RTFM!
    Как всегда, разбить задачу на меньшие.
    1. Получить список имён папок. См. модули pathlib или os.path, а также функции glob.glob() или os.walk().
    2. Разбить имя папки на компоненты - дату и время. str.split() в помощь.
    3. Разбить компоненты на отдельные части - месяц, день, год, час, минуту. То же самое, str.split()
    4. Преобразовать каждый компонент в целое число, расположить их в одном кортеже в порядке убывания: (год, месяц, день, час, минута). Такие кортежи можно сравнивать напрямую, т.е. (1, 2, 3, 4, 5) будет больше чем (1, 2, 3, 4, 4).
    5. Шаги 2-4 заворачиваешь в функцию, которая и возвращает полученный кортеж.
    6. Пропускаешь список папок из п. 1 через функцию max() с параметром key. В key передашь твою функцию из шага 5, это будет критерий сравнения элементов списка. Функция вернёт тебе "наибольший" элемент, а с учётом критерия из п. 4 это будет имя папки с наиболее поздними датой и временем.
    7. PROFIT
    Код набросай сам. Как использовать упомянутые функции, читай в официальной документации.
    Ответ написан