Прерываемые циклы - 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()