ちょっと背伸びしてマルチスレッド。
注文をタッチパネル式端末から出来る居酒屋に行ってきた。これは便利だ。
こういう端末を見ると仕事柄、ついついUIが気になり「ここはこうしたほうが良さそうだ」「なるほど、そういう理由でこうしているのか」なんて思うけど、席を共にしている人はそういう人じゃないので、口に出さないように注意するのが大変だった。
やはりこのAAを思い出した。
というわけで、Threadを使ってマルチスレッドで処理を書いてみる。
#!/usr/bin/env ruby require 'open-uri' uri_list = ['http://www.yahoo.co.jp', 'http://www.google.co.jp'] threads = [] count = 0 uri_list.each do |uri| # uriをコンストラクタに渡しているのは、 # Threadを作成した際の値をThread内部の処理で使用するため。 # また、何個でも指定可能で、指定した順にブロックの引数として # 内部に渡される。 threads << Thread.new(uri) do |uri_in_thread| puts "#{uri_in_thread}取得開始" open(uri_in_thread) do |file| puts "base_uri:#{file.base_uri}, size:#{file.size}" end puts "#{uri_in_thread}取得終了" end end threads.each { |thread| thread.join}
結果。
http://www.yahoo.co.jp取得開始 http://www.google.co.jp取得開始 base_uri:http://www.yahoo.co.jp, size:68602 http://www.yahoo.co.jp取得終了 base_uri:http://www.google.co.jp, size:2671 http://www.google.co.jp取得終了
簡単だ。けど、もういちいち驚かない。
- 作者: Dave Thomas,Chad Fowler,Andy Hunt,まつもとゆきひろ,田和勝
- 出版社/メーカー: オーム社
- 発売日: 2006/08/26
- メディア: 大型本
- 購入: 7人 クリック: 270回
- この商品を含むブログ (152件) を見る