извините за любую ошибку, но мой родной язык - испанец sh. У меня есть следующий вопрос, в показанном коде я делаю сбор данных и затем помещаю их в пустые массивы с помощью .append, но для запуска программы требуется много времени (около 20 секунд), есть ли способ улучшить скорость? Спасибо.
Важно отметить, что используемые данные поступают в формате JSON из API. Из этого JSON формата собирается приблизительно 100 var, а затем снова поступают запросы к тому же API с другими ответами, и данные 100 var собираются снова. Я немного новичок в Python.
try:
data_meli = get_data_meli(country,query) #FUNCTION GET FIRST JSON (CONTAIN DATA FOR THE LOOP common_array)
except Exception as e:
raise e
def common_array():
try:
if data_meli is not None:
for product in data_meli['results']:
if (product['price']) == None or (product['sold_quantity']) == None or (product['condition']) == None:
continue
print(product['title'])
response_item = json.loads(meli.get("/items/{}".format(product['id'])).content)
response_reviews = json.loads(meli.get("reviews/item/{}".format(product['id'])).content)
response_visits = json.loads(meli.get("/items/{}/visits/time_window?last={}&unit=day".format(product['id'],10)).content) #VISITA ULT 10 DIAS
response_seller = json.loads(meli.get("/users/{}".format(product['seller']['id'])).content)
sold_quantity.append(product['sold_quantity'])
if (product['condition']) == "new":
condition.append(1)
else:
condition.append(0)
try:
start_time_day = response_item['start_time'].split("T")[0] if response_item['start_time'].split("-")[0] else start_time_x == '2020-01-01'
start_time_day = datetime.strptime(start_time_day, format_time)
time_publish_days = (((today - start_time_day).days) + 1)
start_time.append(time_publish_days)
level_seller = response_seller['seller_reputation']['level_id']
if level_seller == "5_green":
level_seller = 5
elif level_seller == "4_light_green":
level_seller = 4
elif level_seller == "3_yellow" and response_seller['points'] > 500:
level_seller = 3
else:
level_seller = 0
seller_reputation.append(level_seller) if level_seller else seller_reputation.append(0)
paging_total_reviews.append(response_reviews['paging']['total']) if response_reviews['paging']['total'] else paging_total_reviews.append(0)
total_visits.append(response_visits['total_visits'])
Примерные данные JSON в основном:
"results": [
{
"id": "MLA851129570",
"site_id": "MLA",
"title": "Motorola Moto G G6 Plus 64 Gb Índigo Oscuro 4 Gb Ram",
"seller": {},
"price": 27510,
"currency_id": "ARS",
"available_quantity": 1,
"sold_quantity": 3
}
{
"id": "MLA846452841",
"site_id": "MLA",
"title": "Motorola Moto G G6 Play 32 Gb Índigo Oscuro 3 Gb Ram",
"seller": {},
"price": 19534,
"currency_id": "ARS",
"available_quantity": 1,
"sold_quantity": 2,
}
.
.
.
.
data more 1k items
]
Результат, который я ожидаю, - это та информация, которая ей требуется и какая добавляются (добавляются) в пустые массивы, такие как sold_quantity, start_time и другие. Итак, договоримся с желаемой информацией.
add 30/04/2020
Это пример результата (10 единиц), и желательно, чтобы он был в кратчайшие сроки (между 1 и 3 секунды), но для 100 единиц.
{'sold_quantity': [25, 25, 5, 4, 4, 2, 5, 5, 100, 25], 'condition': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'start_time': [430, 116, 827, 616, 31, 286, 778, 777, 116, 116], 'seller_reputation': [5, 4, 5, 5, 4, 5, 4, 4, 4, 4], 'paging_total_reviews': [2, 0, 0, 0, 0, 0, 2, 0, 0, 0],'total_visits': [8, 151, 54, 10, 90, 6, 61, 136, 95, 69]}