Прерываемые циклы - TrueCat17/Ren-Engine GitHub Wiki
Прерываемые циклы выполняют долгую поставленную задачу, стараясь при этом не сильно понижать фпс, т. е. "не блокируя" игру - в ней всё также можно открывать меню, нажимать кнопки и т. д.
Используется это, например, при скачивании файла или при сборке zip-архива в Лаунчере.
interruptable_for(array, func, on_end = None)
Здесь:
-
array- массив (типыlistиtuple); -
func- функция, которая вызывается для каждого элемента массива; -
on_end- опциональная функция, которая вызывается после сделанной работы.
Псевдокод:
for i in range(len(array)):
func(array[i])
if on_end is not None:
on_end()interruptable_while(func)
Здесь func - функция, которая делает небольшую часть работы, после чего
возвращает True (работа завершена) или False (нужно вызвать ещё раз).
Псевдокод:
ended = False
while not ended:
ended = func()