Как грамотно сделать? Программа взаимодействует с железкой. Посылает в нее команды и принимает ответы. Но ответы могут приходить с серьезной задержкой, вплоть до многих секунд. В это время программа должна не тупо ждать, а слать в железку следующие команды, они там внутри встают в очередь исполнения. В то же время, когда пришел ответ, на это заметить и выполнить действия.
В общем, получается довольно классическая модель работы прерываний. Вот только все это надо на питоне.