我需要在多个虚拟机中启动多个Python脚本。
我想运行脚本并退出。脚本完成后,应该发回一条消息。
到目前为止,我的尝试是:
outputs = {}
threads = []
(0..(@number_of_vms - 1)).each do |vm|
threads << Thread.new do
Net::SSH.start(address[vm], user) do |session|
cmd = 'python /media/sf_openfoam/gen_cfd_results.py'
outputs[address[vm]] = session.exec!(cmd)
end
end
end
threads.each {|thr| thr.join }
这样可行,但它等待脚本完成。
我试图删除最终的join
,但随后Ruby退出并且脚本要么不运行,要么只有其中一个执行并且它会挂起。
有什么建议吗?