Я бы добавил расчет времени к каждому шагу, я сомневаюсь, что это занимает время, и посмотрим, какой шаг во всей вашей программе занимает время.
a1 = time.time()
//your code step
print(time.time() - a1)
Это даст вам время для каждого шага, и вы сможете увидеть какой занимает много времени.
Операции для проверки. 1. создание объектов в циклах 2. операция чтения / записи в Gdrive
Как только вы найдете вызывающий проблемы фрагмент кода, вы можете изменить его.