Спасибо, Итан! С помощью вашего кода я создал обновленную версию кода, которая работает без сбоев! Я знаю, что вы упомянули многопоточность, и сейчас я исследую это в качестве следующего шага. В настоящее время приведенный ниже код занимает около 1 минуты для обработки 150 наборов данных, включая
- чтение из файла
- выполнение запроса на получение к API
- сглаживание вложенный ответ JSON и
- , а затем записать все сразу в файл CSV).
Есть какие-нибудь предложения относительно того, как мы можем обрабатывать тысячи строк данных, не тратя часы на выполнение?
Обновленный код -
import pandas as pd
import requests
def flatten_json(y):
out = {}
def flatten(x, name=''):
if type(x) is dict:
for a in x:
flatten(x[a], name + a + '_')
elif type(x) is list:
i = 0
for a in x:
flatten(a, name + str(i) + '_')
i += 1
else:
out[name[:-1]] = x
flatten(y)
return out
data = []
with open('input.txt') as f_input:
for id in f_input:
url = "API_url"
PARAMS = {'param1': id.strip()}
resp = requests.get(url, headers={
'headerkey': 'headervalue'}, params=PARAMS)
flat = flatten_json(resp.json())
df = pd.json_normalize(flat)
data.append(df)
export_csv = pd.concat(data).to_csv(r'output.csv')