1. Raspberrypi 5.4.72- Linux 10 (buster)
2. Python 2.7.16, 3.7.3
Описание моей безумной задачи: у меня 3 arduino uno с 3 датчиками освещенности, всё это подключено к Raspberry Pi через USB-порты и данные собираются через Serial. Использую multiprocessing для полной передачи данных через serial-порты. Мне нужно вытащить данные с каждого датчика, для дальнейшего сравнения, и я пытаюсь использовать class Queue. Данные выгружаются, но скорость очень маленькая. Знаю, что скорость самого датчика этот процесс не ограничивает из других опытов. Где-то ошибка в логике и правилах использования. Прошу не закидывать тапками, а подсказать куда смотреть и что делаю не так.
Сейчас в коде выведена распечатка данных с каждого датчика для понимания скорости.
2. Python 2.7.16, 3.7.3
Описание моей безумной задачи: у меня 3 arduino uno с 3 датчиками освещенности, всё это подключено к Raspberry Pi через USB-порты и данные собираются через Serial. Использую multiprocessing для полной передачи данных через serial-порты. Мне нужно вытащить данные с каждого датчика, для дальнейшего сравнения, и я пытаюсь использовать class Queue. Данные выгружаются, но скорость очень маленькая. Знаю, что скорость самого датчика этот процесс не ограничивает из других опытов. Где-то ошибка в логике и правилах использования. Прошу не закидывать тапками, а подсказать куда смотреть и что делаю не так.
Сейчас в коде выведена распечатка данных с каждого датчика для понимания скорости.
Python:
from multiprocessing import Process, Queue, Pool
import serial
def working(port, speed, q):
ser = serial.Serial(port, speed)
if ser.isOpen():
try:
ser.flushInput() # flush input buffer, discarding all its contents
ser.flushOutput() # flush output buffer, aborting current output
response = (ser.readline().decode('utf-8'))
q.put(response)
except Exception:
pass
else:
pass
q = Queue()
pool = Pool(processes=10)
if __name__ == '__main__':
usbs = [ '/dev/ttyUSB0', '/dev/ttyUSB1', '/dev/ttyUSB2' ]
for i in list(usbs):
Process(target=working, args=(i, 9600, q)).start()
print(i, q.get())