Я пытаюсь ускорить код ниже. На данный момент это занимает около 15 минут, чтобы бежать ....
Источник данных, к которому я обращаюсь, возвращает только 1000 строк на страницу, число строк неизвестно, поэтому я оставляю итеративные страницы для получения полного набора данных.
Я не уверен, почему это так медленно, источник данных работает на локальном сервере.
Любая помощь будет отличной!
def calcreadings (calc_elements_id, unit_of_time, length_of_data, size = 1000, page = 1):
пытаться:
# импортирует необходимые библиотеки
запросы на импорт
импорт панд как pd
canary_server, access_token = config()
calc_elements_id = str(calc_elements_id)
length_of_data = str(length_of_data)
unit_of_time = str(unit_of_time)
# sets up the requeste to collect data from the API
pages_check = page
# loops over the pages in the api
while pages_check > 0:
request = requests.get(canary_server
+ 'calcelements/' + calc_elements_id
+ '/data/?'
+ 'periodType=' + unit_of_time
+ '&active=false'
+ '&_size=' + str(size)
+ '&_page=' + str(page)
+ '&_sort= Id DESC'
+ '&periodLength=' + str(length_of_data)
+ '&access_token=' + access_token)
calc_readings_check = pd.read_json(request.text)
if len(calc_readings_check) != 0:
if page == 1:
# loads the data from the API in to Pandas Data Frame
calc_readings = calc_readings_check
else:
# loads the data from the API in to Pandas Data Frame and appends
calc_readings = calc_readings.append(calc_readings_check)
page += 1
else:
pages_check = 0
try:
calc_readings['calc_elements_id'] = int(calc_elements_id)
except NameError:
calc_readings = ''
return calc_readings
except:
pass