Well you are saying that but doing pathfinding in python and smth like this:
# A cache, this can probably get pretty big, but right now it's not something I'll think about
RouteCache = {} # {(FromX, FromY, ToZ, ToY, Z): [Route]}
doesn't really sounds promising