Python3 — Некоторые потоки внезапно останавливаются без каких-либо журналов / сообщений

#python-3.x #raspberry-pi #bluetooth-lowenergy #python-multiprocessing

#python-3.x #малина-пи #bluetooth-низкое энергопотребление #python-многопроцессорная обработка

Вопрос:

Я работаю над проектом Python на Raspberry Pi. После последнего выпуска у некоторых наших устройств возникли проблемы. Проект состоит из двух частей: camera и BLE. Сначала эти две части были в отдельных проектах, они работали под разными сервисами systemd. В последней версии я объединил эти два в один проект. Я создаю два процесса с использованием многопроцессорного модуля и создаю потоки в рамках этих процессов. В предыдущей версии я просто создавал потоки и запускал их. Но теперь некоторые потоки из части BLE застряли в точке и перестают работать — без каких-либо журналов ошибок / сообщений. Особенно поток сканирования BLE из процесса BLE, выполняющего это. Эти два проекта работали под управлением двух служб systemd без проблем в течение месяца. Я не мог понять, что вызывает проблему.

Я попытался увеличить размеры стека потоков, отменить многопроцессорную часть и использовать только потоки, как в предыдущей версии, но ни один из них не был решением. Между версиями нет существенных различий, функции, модули, версии пакетов pip одинаковы. В предыдущей ситуации одна из служб выполняла 5-поточный проект, а другая — 10-поточный проект. Теперь у меня есть одна служба, на которой запущена программа python, включающая 15 потоков.

Платформа: Raspbian Stretch -Raspbian Buster (оба)

Версия Python: 3.5 (Stretch) — 3.7 (Buster) (оба)

Важные модули, используемые в части камеры: opencv-contrib-python (3.4.3.18), picamera (1.13)

Важные модули, используемые в части BLE: bluepy (1.3.0)

Не стесняйтесь задавать дополнительные вопросы.

Комментарии:

1. можете ли вы привести пример кода? хороший вопрос, хотя

2. вам нужна определенная часть кода, например, только поток сканирования ble, или вы хотите случайное объяснение различий между двумя версиями