examples/mq/primes.rb in amqp-0.7.0.pre vs examples/mq/primes.rb in amqp-0.7.0
- old
+ new
@@ -1,13 +1,15 @@
+# encoding: utf-8
+
$:.unshift File.dirname(__FILE__) + '/../../lib'
require 'mq'
# check MAX numbers for prime-ness
MAX = 1000
# logging
-def log *args
+def log(*args)
p args
end
# spawn workers
workers = ARGV[0] ? (Integer(ARGV[0]) rescue 1) : 1
@@ -32,38 +34,38 @@
end
# use workers to check which numbers are prime
AMQP.start(:host => 'localhost') do
-
+
prime_checker = MQ.rpc('prime checker')
(10_000...(10_000+MAX)).each do |num|
log :checking, num
prime_checker.is_prime?(num) { |is_prime|
log :prime?, num, is_prime
(@primes||=[]) << num if is_prime
-
+
if (@responses = (@responses || 0) + 1) == MAX
log :primes=, @primes
EM.stop_event_loop
end
}
end
-
+
end
__END__
$ uname -a
Linux gc 2.6.24-ARCH #1 SMP PREEMPT Sun Mar 30 10:50:22 CEST 2008 x86_64 Intel(R) Xeon(R) CPU X3220 @ 2.40GHz GenuineIntel GNU/Linux
$ cat /proc/cpuinfo | grep processor | wc -l
4
-$ time ruby primes-simple.rb
+$ time ruby primes-simple.rb
real 0m16.055s
user 0m16.052s
sys 0m0.000s