Использовать ли Python, когда можно обойтись bash?
Без кода сложно говорить что-то конкретное.
Есть подозрение, что вы не вставляете в цикл никаких задержек. А ведь для большинства практических задач не нужно проверять что-то каждую наносекунду, можно делать, например, раз в 100 миллисекунд. А для некоторых задач и одна проверка в минуту может быть вполне адекватной частотой.
Вот этот код у меня грузит процессор на 99-100%while True:
    x = range(3)
А вот с этим процесс python3 я почти вообще не вижу в выводе команды top. Он там появляется всего несколько раз в минуту с какой-то смешной цифрой вроде 0,2 % загрузки процессора.import time

while True:
    x = range(3)
    time.sleep(0.1)
Так что используйте задержки в цикле и будет вам счастье.
Может быть, можно посмотреть на другие шеллы? Доходили смутные слухи, что разнообразные zsh и csh более логичны, чем bash.