Деградация скорости анимации turtle Python
import turtle
import time
def main():
window = turtle.Screen()
window.bgcolor('blue'), window.setup(500, 500)
turtle.tracer(0)
moon = turtle.Turtle()
moon.speed(0), moon.hideturtle(), moon.penup(), moon.color('orange')
dark = turtle.Turtle()
dark.hideturtle(), dark.speed(0), dark.penup(), dark.color('blue')
while True:
start = time.time()
for x in range(230, -231, -1):
moon.dot(230)
dark.goto(x, 0)
dark.dot(230)
turtle.update()
dark.clear()
else:
print(f'Время {time.time() - start}')
main()
Происходит деградация скорости после каждого прохождения круга. Почему такое происходит? Параметры speed(), tracer() менять пробовал, но появляются мерцания. Можно ли как-то это исправить? Первый тест проходит за 7-8 секунд, а второй раз уже 21 секунду, постоянно идет такой линейный упадок скорости.
Ответы (1 шт):
Автор решения: Арамис
→ Ссылка
Дело в том, что Вы не очищаете объект moon. Если запустить Вашу программу и открыть диспетчер задач, будет видно, как быстро растут затраты ОЗУ. Из-за этого и происходит деградация времени.
В итоге, такой код работает корректно:
import turtle
import time
def main():
window = turtle.Screen()
window.bgcolor('blue'), window.setup(500, 500)
turtle.tracer(0)
moon = turtle.Turtle()
moon.speed(0), moon.hideturtle(), moon.penup(), moon.color('orange')
dark = turtle.Turtle()
dark.hideturtle(), dark.speed(0), dark.penup(), dark.color('blue')
while True:
start = time.time()
for x in range(230, -231, -1):
moon.dot(230)
dark.goto(x, 0)
dark.dot(230)
turtle.update()
dark.clear()
moon.clear()
time.sleep(0.005) # Для замедления анимации
else:
print(f'Время {time.time() - start}')
main()