|
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 8
|
|||||||||||
Многопоточность в Python для камер слежения29.01.2025, 20:48. Показов 2076. Ответов 2
Добрый день.
Описание задачи: У меня есть 7 магазинов, в каждом есть ip-камеры. А также 7 Телеграм-каналов, для каждого магазина. У меня есть скрипт, который анализирует картинку с камер, и периодически отправляет в соответствующий Телеграм-канал картинку с найденными на ней пустыми полками без продуктов (такова задача - искать пустые полки). У меня есть база PostgreSQL, в которой описаны все 7 магазинов. Каждая строка - соответственно один магазин. А столбцы - это данные магазина: имя, rtsp-ссылка на камеры, chat_id для магазина, время работы магазина, интервал отправки сообщений в Телеграм-канал (обычно ставится 30 минут) и так далее. У меня в скрипте реализована многопоточность в Python в таком виде:
Самое главное тут - функция
Многопоточность как бы запускает 7 её экземпляров, то есть для каждого магазина. Запускается все параллельно, чтобы отправка сообщений в Телеграм-каналы шла независимо по каждому магазину, иначе если анализ изображения на одном магазине зависнет надолго, то остальные магазины просто встанут. И вот проблема: один из 7 магазинов при данном раскладе практически не работает. Вот тот интервал отправки сообщений в Телеграм-канал в 30 минут превращается в день, два или вообще неделю. Не пойму, почему именно он. А самый прикол, что когда я отключаю работу остальных магазинов (в БД у меня есть такой столбец типа работает/не не работает), то этот самый магазин отлично запускается и работает. И еще: вроде бы все запускается параллельно, но опять же, возвращаясь к интервалу отправки сообщений в Телеграм-каналах сообщения иногда отправляются будто бы последовательно. То есть будто бы на одном магазине зависает распознавание картинки, и когда оно завершается, то отправляются все сразу в одно время. В общем, мучаюсь с задачей уже несколько недель. По функционалу скрипта вопросов нет. Проблема конкретно в многопотоке, правильно ли он запущен? Может что-то надо добавить?
0
|
|||||||||||
| 29.01.2025, 20:48 | |
|
Ответы с готовыми решениями:
2
Есть ли полноценная многопоточность в Python? Многопоточность в Python, thread или multiprocessing Многопоточность в Python, синхронизация потоков с помощью семафоров или мьютексов |
|
Автоматизируй это!
|
|
| 30.01.2025, 07:02 | |
Сообщение было отмечено Kuaranir как решение
Решение
Kuaranir, все будет работать как вы сказали только в момент самой отправки в тг, вот там будет параллельность, в остальном -нет. Почему? потому что распознавание и работа с изображением это ЦПУ-баунд задача, это наш программистский термин означающий что эта задача целиком решается центральным процессором, а не системой ввода-вывода (как отправка запроса). В питоне параллелятся потоками только система ввода-вывода. Как только надо долго и упорно что-то считать/анализировать (а именно это в скрипте происходит) - все встают и ждут пока анализ закончится, что вы и наблюдаете.
Решения: 1) перейти на питон 3.13 и включить экспериментальную функцию свободных потоков (параллелят и цпу). Тут как повезет, может и не взлететь 2) запускать не потоки, а процессы, через мультипроцессинг например, тоже есть свои сложности, но уже вариант 3) сделать несколько независимых сервисов, например те же 7 сервисов, которые непрерывно чего то там анализируют и результаты кидают по TCP то есть просто по сети сервису, который занимается отправкой в тг 4) сделать независмый скрипт который умеет считать ровно 1 магаз и слать данные в тг, принимает аргументы запуска -ид магазина. Тогда основной скрипт просто читает бд и запускает 7 независмых опять же полноценных скриптов-программ, это можно даже в баш или cmd сделать Вопросы: 1) а почему задержка только при падении исключения? при нормальной работе не нужна пауза? 2) если упадет отправка в тг по любой причине -рухнет все, или так и задумано?
2
|
|
|
0 / 0 / 0
Регистрация: 20.04.2019
Сообщений: 8
|
|||
| 01.02.2025, 10:47 [ТС] | |||
|
Welemir1, спасибо огромное, попробую.
0
|
|||
| 01.02.2025, 10:47 | |
|
Помогаю со студенческими работами здесь
3
Многопоточность в Python PyQt5 Поток просто не хочет привязываться к функции Многопоточность в Python, отслеживание стоимости нескольких акций Удобный видеоплеер для просмотра видео с камер слежения Предоставление онлайн трансляций мировых камер/камер городов Многопоточность в python, Rabbitmq Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|