Я вам пример привёл конкретного кода, на конкретном железе, в "полноценных современных многозадачных операционных системах" - зачем спорить?
Я предпочту (и посоветую) - pass"выжирающий подчистую" - 13%, чем теоретически прекрасный sleep, съедающий "всего лишь" - 47%.
Про реализации - соглашусь. Но ни башем, ни DOS'ом не пользуюсь. Пример выше так работает на моём железе и моём ПО, и было бы странно не верить своим глазам.
А чего вы собственно хотите?
Папка venv создана (и в проводнике видна и надпись красная об этом говорит).
Окружение активировано, в терминале приглашение видно: (venv)...
1. То что сказал Роман: поместите в Barier_event число, на время отладки хотя бы.
2. У вас ground_group почему-то превращаются ниже в Ground_group.
3. Вы решили вообще не инициализировать Barier_group...
4. Переменные именуйте в каком-то одном стиле - самому же проще будет (ground_group,
cactus_group - маленькие, Coin_group - большая) итд.