То, что вы делаете, совершенно правильно, и я думаю, что так должно быть сделано, НО только ради альтернативы, вот попытка
import os
def getFiles(myFolder):
old = os.getcwd()
os.chdir(myFolder)
fileSet = set()
for root, dirs, files in os.walk(""):
for f in files:
fileSet.add(os.path.join(root, f))
os.chdir(old)
return fileSet
Я думаю, что это трудно (если не невозможно) достичь.
Если вы думаете о SQL-запросе в традиционном смысле, он не знает, сколько существует наборов данных и сколько времени это займет. Я не знаю ни одного инструмента SQL (например, DB Visualizer, DataGrip и т. Д.), Который показывает индикатор выполнения и правильную оценку того, сколько времени это займет, потому что он всегда будет зависеть от объема данных в таблице.
Должен быть способ измерения, когда данные загружены на 25% / 50% / 75% / .... И единственное, что может занять много времени в вашем коде, это вызов entityManager.createQuery(...)
.
Я бы предложил удалить индикатор выполнения и добавить что-то вроде счетчика, чтобы показать, что идет загрузка данных. У JFoenix есть приятный дизайнерский прядильщик материала.
Вы также можете добавить простой текст «загрузка данных ...».
Редактировать (чтобы сделать его более заметным): Как правильно подсказал @Slaw, вам также нужно поместить ваш вызов entityManager.createQuery(...)
в новый поток. В противном случае поток пользовательского интерфейса может зависнуть, когда запрос занимает больше времени.