Прерываемые циклы - TrueCat17/Ren-Engine GitHub Wiki

Прерываемые циклы выполняют долгую поставленную задачу, стараясь при этом не сильно понижать фпс, т. е. "не блокируя" игру - в ней всё также можно открывать меню, нажимать кнопки и т. д.

Используется это, например, при скачивании файла или при сборке zip-архива в Лаунчере.


For

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()

While

interruptable_while(func)
Здесь func - функция, которая делает небольшую часть работы, после чего возвращает True (работа завершена) или False (нужно вызвать ещё раз).

Псевдокод:

ended = False
while not ended:
	ended = func()
⚠️ **GitHub.com Fallback** ⚠️