朱莉娅的命令超时

tst*_*ner 4 julia

我有一个Julia脚本,它反复调用C++程序来执行优化.C++程序写一个文本文件,然后我让Julia读取结果并决定下一步该做什么.问题是偶尔(可能是1000次以上)C++程序冻结(优化可能会卡住),并且我的整个脚本无限期地挂起,使得脚本很难通过所有必要的程序调用.有没有办法可以添加超时,这样如果程序在10分钟内没有完成,我可以重新启动一个新的猜测值?

简化示例:

for k = 1:10
    run(`program inputs`)
end
Run Code Online (Sandbox Code Playgroud)

期望:

max_runtime = 10*60 # 10 minutes
for k = 1:10
    run(`program inputs`,max_runtime)
end
Run Code Online (Sandbox Code Playgroud)

替代方案:

max_runtime = 10*60 # 10 minutes
for k = 1:10
    deadline(function,max_runtime)
end
Run Code Online (Sandbox Code Playgroud)

Mik*_*son 6

怎么样的:

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
Run Code Online (Sandbox Code Playgroud)