Я как то здесь про сабпроцесс спрашивал и блочит ли его вызов основной поток приложения, так вот я не уточнил наверное, но вызов await sub.communicate() его блочить по идее должен же да?
Ну в том формате, который ты тут в коде показал - не вижу причин для того, чтоб он что-то там блокал в целом. Да и спавн другого процесса со сгрузкой работы в него в целом то не блочит работу. Работу блочит ожидания результата от того процесса