Так или иначе, вам придётся делать задачу в фоне. Если одна корутина работает долго, разбейте задачу на несколько корутин, каждой делегируйте свою часть. Если принципиально важно всё делать в один поток, делайте работу до вызова результата и сохраните в кэш, после просто показав результат.
Если данные варианты вам не подходят и вы хотите обойтись прогрессбаром, то разбейте задачу на шаги, в вашем случае шаги итерации, и после завершения каждого добавляйте +1/к-во шагов к величине прогресса, просто вызывая это в конце блока цикла.