#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 Я собираюсь привести лучший пример, это действительно беспокоит меня.