jobQueue 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.rdoc CHANGED
@@ -62,7 +62,10 @@ will start 2 parallel searches for ruby files. This is implemented in the
62
62
  prun.rb script, which comes with the jobQueue gem. To run each line of a shell
63
63
  script on 10 threads, use:
64
64
 
65
- prun.rb 10 jobs.sh
65
+ prun.rb -j 10 jobs.sh
66
+
67
+ The '-j' switch is optional. Default is the maximum number of cores. The script
68
+ accepts multiple files and processes one after another.
66
69
 
67
70
  == Support, Issues, Bugs, ...
68
71
 
data/bin/prun.rb CHANGED
@@ -9,13 +9,16 @@ require 'jobqueue'
9
9
  # ==============================================================================
10
10
 
11
11
  nTh = SystemJobs.maxnumber_of_processors
12
- options = {:workers => nTh}
12
+ options = {:workers => nTh,:debug => false}
13
13
  optparse = OptionParser.new do|opts|
14
14
  opts.banner = "Usage: prun.rb [options] command-files"
15
15
 
16
16
  opts.separator ""
17
- opts.on('-j [num]',"Number of worker threads (default:#{nTh})") do |num|
18
- options[:workers] = num
17
+ opts.on('-j [NUM]',"Number of worker threads (default:#{nTh})") do |num|
18
+ options[:workers] = num.to_i.abs
19
+ end
20
+ opts.on('-d','--debug','Print output from workers on stdout') do
21
+ options[:debug] = true
19
22
  end
20
23
  # This displays the help screen, all programs are
21
24
  # assumed to have this option.
@@ -35,7 +38,8 @@ end
35
38
  ARGV.each do|f|
36
39
  # read file line per line
37
40
  lines = File.open(f).readlines.map(&:chomp)
38
- q = SystemJobs.new(nTh)
41
+ q = SystemJobs.new(options[:workers],options[:debug])
42
+ puts q.workers if options[:debug]
39
43
  lines.each {|line| q.push(line) }
40
44
  q.run
41
45
  end
data/gemspec CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  spec = Gem::Specification.new do |s|
4
4
  s.name = "jobQueue"
5
- s.version = '1.0.3'
5
+ s.version = '1.0.4'
6
6
  s.platform = Gem::Platform::RUBY
7
7
  s.bindir = 'bin'
8
8
  s.files = ["lib/jobqueue.rb","bin/prun.rb"] + ["gemspec","LICENSE","README.rdoc"]
data/lib/jobqueue.rb CHANGED
@@ -12,9 +12,10 @@ class JobQueue
12
12
  attr_reader :workers, :threads
13
13
 
14
14
  # Create a new queue qith a given number of worker threads
15
- def initialize(nWorkers)
15
+ def initialize(nWorkers,debug=false)
16
16
  @workers = nWorkers
17
17
  @queue = Queue.new
18
+ @debug = debug
18
19
  end
19
20
 
20
21
  # borrow some useful methods from Queue class
@@ -90,9 +91,13 @@ end
90
91
  class SystemJobs < JobQueue
91
92
  def run
92
93
  @threads = (1..@workers).map {|i|
93
- Thread.new(@queue) {|q|
94
+ Thread.new(@queue,@debug) {|q,dbg|
94
95
  until ( q == ( task = q.deq ) )
95
- IO.popen(task).read
96
+ if dbg
97
+ puts IO.popen(task.first).read
98
+ else
99
+ IO.popen(task.first)
100
+ end
96
101
  end
97
102
  }
98
103
  }
@@ -1,6 +1,7 @@
1
1
  $:.unshift File.join(File.dirname(__FILE__),"..","lib")
2
2
  require 'test/unit'
3
3
  require 'jobqueue'
4
+ require 'tempfile'
4
5
 
5
6
 
6
7
  NTHREDs = ENV['NTHREDs'].nil? ? 4 : ENV['NTHREDs']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jobQueue
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-15 00:00:00.000000000 Z
12
+ date: 2011-12-21 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Run Shell commands or Ruby methods in parallel
15
15
  email: stark.dreamdetective@gmail.com