Я нахожусь на начальных этапах разработки масштабируемой системы тестирования оборудования на основе CAN. Две основные функции тестовой системы - это регистрация всего трафика c на шине И выполнение тестовых примеров. Тестовые примеры в основном будут состоять из приема и передачи сообщений CAN при оценке содержимого полезных данных сообщения. Также будет ряд тестовых примеров, которые необходимо будет интегрировать с устройством с последовательным управлением.
Из-за важности регистрации всего CAN-трафика c Я рассматривал программу на основе параллелизма. Но я не уверен, какую форму параллелизма мне следует реализовать. Я читал о asyncIO , threading и multiprocessing . Так что я хорошо отношусь к каждому из них.
Я также использую библиотеку python -can, которая, кажется, имеет встроенный asyncIO, так что это наводит меня на мысль, что с asyncIO все должно быть хорошо. Меня беспокоит, что мне, возможно, придется установить sh какую-то буферизацию с помощью asyncIO, если сопрограмма тестового примера не обрабатывается достаточно быстро. Скорость автобуса 500кб. На CAN-шине 2 модуля. Самая высокая частота сообщений составляет 20 мс. Я полагаю, этого достаточно для asyncIO, чтобы запустить 2 сопрограммы. Меня также волнует масштабируемость.
Верны ли мои предположения? Должно ли быть нормально использовать asyncIO?
Любой вклад приветствуется.