dim5x, бесконечный цикл безо всяких действий полностью исполняется процессором и считается в user time, все миллионы и миллиарды итераций. А sleep приводит к системному вызову и стоит около нуля user time - штучное количество тактов процессора в секунду. Фактически это возврат управления операционной системе.
Это реально так и работает. Я не раз видел, как люди допускали подобную ошибку. Например, делали "ничего не делающий" цикл в bash, который по факту всё же "что-то делал" и выжирал одно процессорное ядро подчистую.
Конечно, может зависеть от операционной системы и конкретной реализации. В DOS, например, даже sleep всегда является циклом, потому что процессор полностью в распоряжении программы, операционная система включается лишь по запросу или в результате аппаратных прерываний. Но мы же говорим о полноценных современных многозадачных операционных системах.
Я вам пример привёл конкретного кода, на конкретном железе, в "полноценных современных многозадачных операционных системах" - зачем спорить?
Я предпочту (и посоветую) - pass"выжирающий подчистую" - 13%, чем теоретически прекрасный sleep, съедающий "всего лишь" - 47%.
Про реализации - соглашусь. Но ни башем, ни DOS'ом не пользуюсь. Пример выше так работает на моём железе и моём ПО, и было бы странно не верить своим глазам.
dim5x, я не знаю что это за "пример кода" и что там за "железо" и как рисуются эти "графики". Но так делать всё равно НЕЛЬЗЯ. Потому что в другой раз эта ошибка дорого обойдётся. Потому что именно семантически бесконечный цикл без полезных действий в любом случае целиком исполняется процессором. В любом языке. Это надо сразу же знать и никогда не делать.
Кстати, и первичную задачу лучще было бы сделать thread.join() на любом из запущенных тредов. Если они всё равно бесконечны - он никогда не завершится.
dim5x, я склонен думать это google colab нарочно борется с такими пустыми циклами в своём интерпретаторе, добавляя фиктивные sleep или даже хотя бы перемещая по pass в конец очереди планировщика.
Делать процессородробительный цикл всё равно будет по-прежнему неправильно. И этому надо учиться сразу.