Python 3: поток "наблюдения" за периодом c завершение задачи - PullRequest
0 голосов
/ 10 июля 2020

Я новичок в программировании python и столкнулся со следующей проблемой: у меня есть небольшая аппаратная плата разработчика, которая периодически собирает некоторые данные и отправляет их на P C через Zigbee (используя другое устройство zigbee, подключенное к P C через USB), передавая одно значение измерения в секунду на P C (python3). Драйвер python3 (к сожалению, не бесплатный, поэтому я не могу предоставить подробности) работает для моего базового c варианта использования.

Драйвер запускается в отдельном потоке и устанавливает событие, при котором мой основной код (основной поток ) записывает значение в некоторый текстовый файл. Теперь все работает нормально, но иногда выполнение кода в python кажется медленнее, и я вижу, что «дельта» моих временных меток в моем файле журнала увеличивается. (иногда примерно до 10 секунд вместо 1 значения в секунду). Я исключил "аппаратное обеспечение" (то есть комбинацию аппаратного и микропрограммного обеспечения) как причину, это должна быть сторона python.

К сожалению, я не могу сказать, какая часть кода вызывает замедление и почему.

Есть ли способ в python проверить, установлено ли определенное событие c в пределах заданного интервала? Итак, могу ли я как-то проверить, поступает ли хотя бы каждые 2 секунды значение и тревожит ли основное приложение, если это не так?

Поскольку поток регистрации каким-то образом замедляется, я думаю, что я не могу просто использовать другое поток, который запускает таймер, потому что как определить, не замедляется ли этот поток таймера?

Должен ли я использовать что-то вроде отдельной программы, работающей в отдельном процессе (с назначенными ресурсами P C, чем процесс, который нужно отслеживать?) и если да, как мне это сделать?

...