Python - Ускорьте алгоритм поиска звездных путей

Я написал свой первый слегка сложный алгоритм, реализациюЗвездный поиск пути алгоритм. Я следовал за некоторымиСовет Python.org при реализации графиков, чтобы словарь содержал все узлы, с которыми связан каждый узел. Теперь, так как это все для игры, каждый узел на самом деле является просто плиткой в ​​сетке узлов, отсюда и то, как я работаю над эвристикой и моей случайной ссылкой на них.

Благодаря timeit я знаю, что могу успешно запускать эту функцию чуть более ста раз в секунду. Понятно, что это делает меня немного неловким, это без каких-либо других «игровых вещей», таких как графика или расчет игровой логики. Поэтому я хотел бы посмотреть, сможет ли кто-нибудь из вас ускорить мой алгоритм, я совершенно незнаком с Cython или его родом, я не могу написать строку C.

Без лишних разговоров, вот моя функция A Star.

def aStar(self, graph, current, end):
    openList = []
    closedList = []
    path = []

    def retracePath(c):
        path.insert(0,c)
        if c.parent == None:
            return
        retracePath(c.parent)

    openList.append(current)
    while len(openList) is not 0:
        current = min(openList, key=lambda inst:inst.H)
        if current == end:
            return retracePath(current)
        openList.remove(current)
        closedList.append(current)
        for tile in graph[current]:
            if tile not in closedList:
                tile.H = (abs(end.x-tile.x)+abs(end.y-tile.y))*10 
                if tile not in openList:
                    openList.append(tile)
                tile.parent = current
    return path

Ответы на вопрос(3)

Ваш ответ на вопрос