gpt4 book ai didi

Ruby 和 Threads - 为什么我的脚本没有完成?

转载 作者:太空宇宙 更新时间:2023-11-03 16:14:29 25 4
gpt4 key购买 nike

我有一个脚本可以使用 Thread 为集群远程配置节点,这样我就可以一次完成所有这些任务。

有没有更好的方法可以让我获得返回码、干净的退出以及似乎不会运行超长时间的脚本?

@threads = []

def process_node(apps_to_close, node)
@threads << Thread.new do
puts "now processing node #{node}\n"
...
end
end

nodes.each do |node|
process_node(apps_to_close, node)
end

@threads.each {|thr| thr.join}

最佳答案

您可以通过 join 限制线程运行的时间。 ,如果达到超时时线程仍在运行,则返回 nil。所以你可以将其重写为:

...

results = @threads.collect { |thr| thr.join(1) } # wait 1 second for thread
@threads.each { |t| Thread.kill(t) }
results.any?(&:nil?) ? exit(1) : exit(0)

关于Ruby 和 Threads - 为什么我的脚本没有完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50411463/

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