#python #azure #pygame #pycharm
#python #azure #pygame #pycharm
Вопрос:
В настоящее время я разрабатываю симулятор значений датчиков интернета вещей, используя PyCharm IDE (вместе с pygame). По сути, я пытаюсь создать / отправить данные на платформу Microsoft Azure IoT, пока для пользователей доступен графический интерфейс, в котором они могут видеть температуры каждого датчика, изменять выходные данные датчика и т.д.
Поскольку я не хочу спамить Azure сообщениями, я использую функцию ожидания между каждым отправляемым сообщением, чтобы ограничить скорость отправки сообщений. В результате это замедляет работу всего приложения и делает его немного громоздким. Есть ли способ обойти это, чтобы я мог отправлять сообщения, не влияя на пользовательский интерфейс в графическом интерфейсе? Спасибо!
Комментарии:
1. Вам нужно отправлять сообщения в другом потоке и иметь графический интерфейс в главном потоке, или не использовать режим ожидания, а вместо этого вычислять, сколько времени прошло перед отправкой каждого сообщения, и отправлять его только по истечении определенного времени.
Ответ №1:
Как указал Тед, многопоточность, безусловно, является вариантом, но может быть немного излишним в зависимости от вашего случая.
В качестве альтернативного решения вы можете использовать модуль time python для вычисления времени, прошедшего с момента отправки последнего сообщения, и отправлять новое сообщение, только если прошло достаточно времени. Таким образом, ваши другие процессы будут продолжать выполняться должным образом, и вам не придется переводить вашу программу в спящий режим / замораживать ее.
import time
start = time.time()
message_interval = 5 # in seconds
while True:
# other application logic
if time.time() - start >= message_interval:
send_message()
start = time.time() # reset timer
Потенциально вы могли бы даже объединить это с другой проверкой, чтобы увидеть, нужно ли вообще отправлять сообщение.
import time
start = time.time()
message_interval = 5 # in seconds
update_available = true
while True:
if time.time() - start >= message_interval and update_available:
send_update_message()
start = time.time() # reset timer
update_available = false # reset variable
Ответ №2:
в документах упоминается отладчик, который вы можете запускать локально