The function is executed once and regularly

of course.

but my understanding of these functions is that home_position() needs to complete, in fact, won't return until it is complete and only then can any other function be executed.

my understanding is the home_position() starts the motors running and then stops each motor when the associated sensor indicates a specific angle. it returns after all motors have stopped.