Sim, é possível fazer em um único segmento. De um modo geral, você desejará atualizar os objetos a cada quadro e não apenas quando houver ciclos de reposição. Suas animações e movimentos serão desconectados da taxa de quadros e parecerão um pouco irregulares se você não o fizer. Se você está falando mais sobre atualizações de IA ou algo mais que não precisa ser em tempo real, eu colocaria um cronômetro nele. Você deve saber qual é a sua taxa de quadros-alvo e o tempo ocioso será o que resta depois que todo o resto for concluído.
Digamos que você esteja direcionando 60 FPS para o seu jogo. Isso deixa você com 16.667 ms para executar todo o trabalho necessário para cada quadro. No início do jogo, obtenha a hora atual usando o cronômetro de maior resolução disponível, adicione 16.667 ms e guarde-o em algum lugar. Eu acho que a função em python é time (), embora tenha sido um tempo desde que eu trabalhei na linguagem. Após a conclusão do processamento, insira um loop que verifique a hora atual em relação à hora que você gravou. Se o horário atual for menor que o horário de término do quadro, atualize_a_very_small_amount. Não me preocuparia muito com o processamento que passou do final do quadro, já que sua pequena atualização deve ser rápida no processamento. Seria apenas um pequeno atraso para o início do próximo quadro e você parece ter tempo de inatividade suficiente para lidar com isso.
Após o término do processamento do quadro, adicione 16,667 ms ao tempo que foi armazenado para o final do último quadro para descobrir onde o final do próximo quadro deve estar. Se você usar o tempo atual + 16,667 ms e o processamento terminar, o final do próximo quadro será adiado por quanto tempo o último quadro atropelar.
Re: Segunda Edição
Para esclarecer, eu uso o termo taxa de quadros aqui para indicar uma iteração no loop principal. Se for baseado na velocidade de entrada do usuário, imagino que seu objetivo seja simplesmente fazer com que o jogo pareça responsivo. Caso contrário, você pode apenas verificar a entrada e atualizar tudo a cada vez no loop, mesmo que demore 10 segundos para fazê-lo. Para se sentir responsivo, você provavelmente desejará verificar a entrada em torno de 20 vezes por segundo, o que fornece uma taxa de quadros efetiva de 20 FPS, mesmo se você não estiver desenhando esses quadros. Isso daria a você 50 ms para atualizar as coisas antes de precisar verificar a entrada novamente.