Скрипт Simple API Rest python занимает много времени (или не заканчивается) - PullRequest
1 голос
/ 05 февраля 2020

Для бизнес-процесса мне нужно рассчитать расстояние в пути между пунктами отправления 1 и 30 тыс.

Я получаю координаты отправления и назначения из Google Sheet. Пункт назначения - это матрица (приблизительно 100 x 30).

Я использую HERE api для вычисления расстояния.

В результате должна быть та же матрица адресатов, но с расстояние (в том же порядке, что и координаты пункта назначения).

Это часть скрипта, которая рассчитывает расстояние и, я думаю, тот, который длится много:

distance= []
distance= pd.DataFrame(distance)

for row in destinations.itertuples():
    a= row[1:]
    distance1 = []
    for column in a:
        try:
            args = {'waypoint0': 'geo!'+origins, 'waypoint1': 'geo!'+column, 'mode': 'fastest;truck'}
            qstr = urlencode(args)
            url = "https://route.ls.hereapi.com/routing/7.2/calculateroute.json?apiKey=xxxx" + qstr
            response = urllib.request.urlopen(url)
            dist = json.loads(response.read())['response']['route'][0]['leg'][0]['length']/1000

        except Exception:
            dist = 10000
        distance1.append(dist)
    distance2 = pd.DataFrame(distance1)
    distance2 = distance2.T
    distance = distance.append(distance2)

Кто-нибудь думает о лучшем способе сделать скрипт на самом деле окончательным sh?

Спасибо !!

1 Ответ

1 голос
/ 06 февраля 2020

Логика c выглядит довольно точно. Если вам необходимо ограничить число l oop, проверьте API-интерфейс для крупномасштабной матричной маршрутизации, если он соответствует сценарию использования.

Сервисом для крупномасштабной матричной маршрутизации является HTTP JSON API для расчета матрицы маршрутизации с большим количеством начальных и конечных точек (например, 10 000 x 10 000).

Для получения более подробной информации, пожалуйста, обратитесь к следующему документу: c:

https://developer.here.com/documentation/large-matrix/api-reference-swagger.html

Примечание : удалите appKey из фрагмента общего кода

...