質問: Rubyプログラムを実行し、別プログラムからその値を参照できますでしょうか? あるRubyプログラム(ruby_data.rb)を実行し、そのプログラムで外部からデータをHTTP のGETで毎秒取得し続けています。 別の複数のRubyプログラム(ruby_sum1.rb , ruby_sum2.rb, ruby_sum3.rb, ruby_sum4.rb )を別ターミナルで実行し、 これらのプログラムから、ruby_data.rbで取得したデータを参照することはできるでしょうか。書き換えではなく値を取得するだけです。 今はruby_sum1.rb , ruby_sum2.rb, ruby_sum3.rb, ruby_sum4.rbのそれぞれのプログラムに、ruby_data.rbでの処理をスレッドで実行しているのですが、HTTP GETの回数を減らしたく1つにまとめられたらと思っています。 forkを使えばできるかなとも思いましたが、プログラムが分かれていると厳しいのでしょうか。 ご回答お願い致します。
回答: 初心者がやるなら、ファイルに書き出して、読み出すのが簡単です。 他には、ソケットを使った通信をすることも考えられますが、データ取得しながら配布するというのは、難易度が高いと思います。 並行処理の間でデータを共有するには、他には、1プロセスの中でスレッドに分けて実行すると、変数を共有できますが、これも難易度が高いかと思います。 追記: ruby_data.rbがずっと動き続けて、データ取得毎に、ruby_sum1.rb,2,3,4を起動するが、ruby_sum1.rb等はすぐ終わると言う事なら、 ruby_data.rbがデータ取得後に、ruby_sum1.rbを`IO.popen`で起動してそのパイプにデータを書けばruby_sum1.rbは標準入力から読めます。 簡単にやると、sum1,2,3,4は順番に実行ということになりますが。