Решение будет зависеть от того, что вы делаете. Если вы вызываете одну функцию, которую вы не можете контролировать и которая иногда может выполняться дольше, чем 1 секунда или около того, вы в значительной степени застряли с необходимостью запустить эту функцию в фоновом потоке, а затем завершить поток, если он выполняется длинный.
Если вы на самом деле выполняете длинный цикл или какой-то другой код, которым вы действительно управляете, вы можете просто записать текущее время перед запуском процесса, а в цикле проверить, выполняется ли долго, и если это так, выйдите из цикла.
Просто зависит.