gpt4 book ai didi

exception - 如何在 Prolog 中捕获超时异常

转载 作者:行者123 更新时间:2023-12-04 23:30:34 25 4
gpt4 key购买 nike

我想在序言中限制算法的“执行”。你能给我一个提示,怎么做吗?我找到了这个谓词:call_with_time_limit如何捕获 time_limit_exceeded 异常?谢谢

更新:

我正在尝试这样做:

timeout(t) :-
catch(call_with_time_limit(t, sleep(5)), X, error_process(X)).

error_process(time_limit_exceeded) :- write('Timeout exceeded'), nl, halt.
error_process(X) :- write('Unknown Error' : X), nl, halt.

但是当我调用 timeout(1) 时注意到发生了:

prolog :-
timeout(1),

但是当我这样做的时候:

runStart :- call_with_time_limit(1, sleep(5)).

timeout(1) :-
catch(runStart, X, error_process(X)).

error_process(time_limit_exceeded) :- write('Timeout exceeded'), nl, halt.
error_process(X) :- write('Unknown Error' : X), nl, halt.

再次调用 timeout(1) 一切正常。为什么?谢谢更新 2:

问题已解决,有必要使用大写的谓词“参数”...

最佳答案

使用catch/3 .示例:

catch(call_with_time_limit(1,
sleep(5)),
time_limit_exceeded,
writeln('overslept!')).

更实际:

catch(call_with_time_limit(T, heavy_computation(X)),
time_limit_exceeded,
X = no_answer). % or just fail

关于exception - 如何在 Prolog 中捕获超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5721257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com