Python - Acelere um algoritmo A Star Pathfinding

Eu codifiquei meu primeiro algoritmo um pouco complexo, uma implementação doUm Caminho de Estrela algoritmo. Eu segui algunsConselho do Python.org na implementação de gráficos para que um dicionário contenha todos os nós em que cada nó também esteja vinculado. Agora, como isso é tudo para um jogo, cada nó é realmente apenas um bloco em uma grade de nós, portanto, como estou elaborando a heurística e minha referência ocasional a eles.

Graças ao timeit, sei que posso executar essa função com êxito um pouco mais de cem vezes por segundo. Compreensivelmente, isso me deixa um pouco desconfortável, sem outras coisas do jogo, como gráficos ou cálculo da lógica do jogo. Então, eu adoraria ver se algum de vocês pode acelerar meu algoritmo, não conheço completamente o Cython ou é parente, não consigo codificar uma linha de C.

Sem mais divagações, aqui está minha função 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

questionAnswers(3)

yourAnswerToTheQuestion