35.598 секунд, есть вариант это как то ускорить?
Есть тут один альтернативный интерпретатор питона который хорошо ускоряет как раз подобный код. Но он не дружит с некоторыми сишными расширениями: from geopy import distance import random def main(): dists = [] for i in range(207915): a = (random.uniform(35, 45), random.uniform(-70, -80)) b = (random.uniform(35, 45), random.uniform(-70, -80)) dists.append(distance.distance(a, b).miles) if __name__ == '__main__': main() $ time python3.11 foo.py real 0m29,498s user 0m29,416s sys 0m0,048s $ time pypy3.9 foo.py real 0m5,490s user 0m5,383s sys 0m0,077s
не не вариант там psycopg2 точно отвалится
Есть numba (и еще одна была с похожим функционалом), она компилирует сишное расширение прямо в рантайме прямо из питонячьей функции. Но с ней может быть сложно подружить существующий код.
Или переписать на numpy и использовать векторное вычисление дистанции из scipy
Обсуждают сегодня