Executar código após algum tempo ou uma condição ser atendida

Qual é a melhor e mais DRYest maneira de escrever código que pode ser executado quando se passa algum tempo (digamos, 5 segundos) ou se alguma condição é atendida (por exemplo,bool = true) -o que ocorrer primeiro. Os cinco segundos começam a contar a partir da primeira execução do script, e o booleano é um global que é alterado por outra função. Não acho que você possa combinar o tempo limite e o check-bool em uma declaração, mas outra boa maneira também é boa.

Pseudo-código:

if (bool = true OR timePassed = 5000):
    runCode()

questionAnswers(5)

yourAnswerToTheQuestion