Я не могу говорить за каждую настройку сбора данных, но большинство из них тратят большую часть своих "операций в реальном времени" , ожидая данные для входа - по крайней мере те, над которыми я работал.
Затем, когда поступают данные , вам необходимо немедленно записать событие или ответить на него, а затем он возвращается к ожидающей игре. Как правило, это наиболее критичная по времени часть системы сбора данных. По этой причине я бы обычно сказал бы придерживаться C для частей ввода / вывода сбора данных, но нет никаких особых причин не использовать Python на не критичных ко времени частях.
Если у вас достаточно слабые требования - возможно, нужна только точность в миллисекундах - это добавляет вес к выполнению всего в Python. Что касается времени разработки, если вы уже знакомы с Python, вы, вероятно, получили бы готовый продукт значительно раньше, если бы вы все делали на Python и выполняли рефакторинг только в случае появления узких мест. Выполнение основной части вашей работы в Python также облегчит тщательное тестирование кода, и, как правило, будет меньше строк кода и, следовательно, меньше места для ошибок.
Если вам нужно специально мульти- задача (не мульти- thread ), Stackless Python также может быть полезным. Это похоже на многопоточность, но потоки (или тасклеты в жаргоне Stackless) - это не потоки уровня ОС, а уровень Python / приложения, поэтому накладные расходы на переключение между тасклетами составляют значительно уменьшено. Вы можете настроить Stackless на многозадачность совместно или превентивно. Самым большим недостатком является то, что блокировка ввода-вывода обычно блокирует весь набор тасклетов. В любом случае, учитывая, что QNX уже является системой реального времени, трудно предположить, стоит ли использовать Stackless.
Моим голосом было бы избрать максимально возможный путь Python - я считаю его низкой стоимостью и высокой выгодой. Если и когда вам нужно переписать на C, у вас уже будет рабочий код для запуска.