«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу запускать параллельные циклы в Pygame, не блокируя основной цикл?

Как я могу запускать параллельные циклы в Pygame, не блокируя основной цикл?

Опубликовано 8 ноября 2024 г.
Просматривать:191

How Can I Run Concurrent Loops in Pygame Without Blocking the Main Loop?

Управление параллельными циклами в Pygame

В Pygame одновременная обработка нескольких циклов while может иметь решающее значение для программ, требующих параллельных задач. В этой статье рассматривается проблема, возникшая у пользователя, пытающегося реализовать цикл внутри цикла, обеспечивая при этом непрерывное выполнение программы.

Пользователь пытался добавить цикл с управлением по времени в основной цикл приложения. Хотя это может показаться простым, дополнительный цикл по своей сути останавливает другие операции программы из-за блокирующей природы time.sleep() и подобных методов. Этот конфликт проистекает из фундаментального принципа основного цикла Pygame, который обрабатывает события и отображает обновления.

Решение: использовать измерение времени

Вместо использования функций блокировки сна, рекомендуемое решение использует функцию Pygame time.get_ticks() для отслеживания системного времени. Вычисляя будущие моменты времени на основе текущего времени, программа может определить, когда обновить и визуализировать лицо, не прерывая основной цикл.

Пересмотренная структура кода

next_render_time = 0

while run:
    current_time = pygame.time.get_ticks()

    # Existing code here...

    if current_time >= next_render_time:
        currentFace = random.choice(face)
        faceDisplay = myFont.render(str(currentFace), 1, (0,255,0))
        next_render_time = current_time   randint(5, 10) * 1000

    screen.fill((0,0,0))
    screen.blit(faceDisplay, text_rect)
    pygame.display.flip()

Эта пересмотренная структура позволяет обоим циклам работать одновременно, гарантируя, что лицо меняется с указанными интервалами, не затрагивая другие функции программы.

Аспекты событий таймера

В качестве альтернативы Pygame предоставляет события таймера для планирования действий через фиксированные интервалы времени. Однако в случаях, подобных представленному, когда интервал не является постоянным, более целесообразно использовать метод измерения времени.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3