Запуск двух файлов в одном проекте на PyCharm

#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:

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