timeout package, which may be loaded by the query
| ?- use_module(library(timeout)).
contains the predicate:
time_out(:Goal, +Time, ?Result)
call/1. If computing any solution takes more than Time milliseconds, process virtual time, the goal will fail and Result is unified with the atom
time_out. If the goal succeeds within the specified time Result is unified with the atom
success. Time must be a number between (not including) 0 and 2147483647.
time_out/3 is implemented by raising and handling
time_out exceptions, so any exception handler in the scope of
Goal must be prepared to pass on
The following incorrect example shows what can happen otherwise:
| ?- time_out(on_exception(Q,(repeat,false),true), 1000, Res). Q = time_out, Res = success