Julia 中的命令超时
Command timeouts in Julia
我有一个 Julia 脚本,它重复调用 C++ 程序来执行优化。 C++ 程序编写一个文本文件,然后我让 Julia 读取结果并决定下一步做什么。问题是 C++ 程序偶尔(可能超过 1000 次中有 1 次)冻结(优化可能卡住了),我的整个脚本无限期挂起,这使得脚本很难完成所有必要的程序调用。有没有办法可以添加超时,这样如果程序在 10 分钟内没有完成,我可以用新的猜测值重新启动?
简化示例:
for k = 1:10
run(`program inputs`)
end
期望:
max_runtime = 10*60 # 10 minutes
for k = 1:10
run(`program inputs`,max_runtime)
end
选择:
max_runtime = 10*60 # 10 minutes
for k = 1:10
deadline(function,max_runtime)
end
怎么样:
max_runtime = 10*60 # 10 minutes
for k = 1:10
proc = spawn(`program inputs`)
timedwait(() -> process_exited(proc), max_runtime)
if process_running(proc)
kill(proc)
end
end
我有一个 Julia 脚本,它重复调用 C++ 程序来执行优化。 C++ 程序编写一个文本文件,然后我让 Julia 读取结果并决定下一步做什么。问题是 C++ 程序偶尔(可能超过 1000 次中有 1 次)冻结(优化可能卡住了),我的整个脚本无限期挂起,这使得脚本很难完成所有必要的程序调用。有没有办法可以添加超时,这样如果程序在 10 分钟内没有完成,我可以用新的猜测值重新启动?
简化示例:
for k = 1:10
run(`program inputs`)
end
期望:
max_runtime = 10*60 # 10 minutes
for k = 1:10
run(`program inputs`,max_runtime)
end
选择:
max_runtime = 10*60 # 10 minutes
for k = 1:10
deadline(function,max_runtime)
end
怎么样:
max_runtime = 10*60 # 10 minutes
for k = 1:10
proc = spawn(`program inputs`)
timedwait(() -> process_exited(proc), max_runtime)
if process_running(proc)
kill(proc)
end
end