Итак, у меня есть некоторый код, который извлекает данные из API на локальном хосте, а затем записывает их через последовательный порт на Arduino, который питает пару вентиляторов PWM. Вот код:
import urllib3
import serial
import json
s = serial.Serial('com4', 9600)
conn = urllib3.PoolManager()
def get_speed(conn):
r = conn.request('GET', 'http://localhost:8180/crest2/v1/api')
data = json.loads(r.data.decode())
metersPerSec = int(data['carState']['mSpeed'])
kilometersPerHour = int(metersPerSec * 3.6)
kilometersPerHour = str(kilometersPerHour) + '\n'
print(kilometersPerHour)
s.write((kilometersPerHour.encode()))
s.flush()
running=True
while running:
get_speed(conn)
Мне нужен этот код для чтения из API и очень быстрой записи по последовательному каналу в arduino (несколько раз в секунду). Когда я запускаю скрипт, он запускается snappy и вызывает api много раз в секунду, как и ожидалось, но через несколько секунд он замедляется и делает звонки только каждую секунду или около того. Я предполагаю, что это связано с какой-то утечкой памяти или неправильным использованием цикла while, но я недостаточно информирован, чтобы исправить мою проблему.
Буду очень признателен за любую помощь или руководство по аналогичной проблеме, поскольку я потратил несколько дней на поиск и отработку различных вещей для оптимизации.
Спасибо!