Служба Python использует 100% ЦП в цикле while со сном (внутри контейнера docker)

#python #docker #asynchronous #async-await #sleep

#python #docker #асинхронный #асинхронное ожидание #сон

Вопрос:

У меня есть код python3, который делает что-то вроде этого:

 import asyncio
import time

async def main():
    while True:
        if should_end():
            break
        # time.sleep(0.5)
        await asyncio.sleep(0.5)

if __name__ == "__main__":
    asyncio.run(main())
 

Я тестировал его с time.sleep(0.5) помощью and await asyncio.sleep(0.5) , но в обоих случаях он использует 100% процессора.

 CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
f698d943d5d5        my-container      100.66%                 5.7MiB / 15.52GiB   0.16%               0B / 0B             56.9MB / 0B         30
 

Я запускаю контейнер docker в Ubuntu.

Комментарии:

1. Не воспроизводится на моей машине — статистика docker показывает 0,12%. 1. Какова загрузка процессора, если вы запускаете его без docker? 2. Что should_end делать?

2. top говорит о 24%, но это потому, что на компьютере установлено 4 процессора.

3. Я думаю, что top по умолчанию отображает cpu% для одного ядра: unix.stackexchange.com/questions/145247 /. … Вы пробовали профилировать код? (Без вывода профилировщика у меня есть только глупые идеи, такие как неправильный отступ sleep или вращение should_end и использование процессора)

4. @Lesiak Я собираюсь привести лучший пример, это действительно беспокоит меня.