ppool 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d2548c9a28db03e3abdc552d6fc3432d58dc71a
4
- data.tar.gz: 5813e7a4b5c948309d05ccd4981083f282cf633e
3
+ metadata.gz: f09e2d6b93728af6217c3215ba81e6b9c1b38417
4
+ data.tar.gz: 8422bbc116f119e168191fc5dede318f8d339488
5
5
  SHA512:
6
- metadata.gz: b4b18fb2de4b750e3457fff0db63a0d6bb08b4d27ccc562a0e8ed366582711bb30a14863b3b7712f01f4310471222b3e94054a00a717e1a5c743129b7fbb70a3
7
- data.tar.gz: 32706e46ae2dfdb5aee17d72dd05fa5eb9edba49e506327cda65ffd14c961ebf4f483881d6a33d4fa0771edba5bbfd088a4972ff3c4a69d5bab66c69b7a68c2d
6
+ metadata.gz: cdb05df7fd35d02fe440ce91863bce35f7ebfc07331851bf2856302a0b96dbbe6eb1020c0cb31638c52bb2fa909e6077b5f44a5949d1ec7dcfeaafecd4ee70fe
7
+ data.tar.gz: cf690c45a03b79b6aaf97b75b139c8ee8d7311a56c9616fd849f5bb81e8b6a6f81a171d2a9bf9475e487bd11e95c884c025deaa2d6223d2fe437898e82c0bf94
data/bin/ppool CHANGED
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # MIT License
4
4
  #
5
- # Copyright (c) 2016 Paul Taylor
5
+ # Copyright (c) 2016, 2017 Paul Taylor
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the "Software"), to deal
@@ -33,7 +33,8 @@ options = {
33
33
  :basic => false,
34
34
  :logdir => "./ppool-logs",
35
35
  :rmlogs => false,
36
- :timespec => nil
36
+ :timespec => nil,
37
+ :average_size => nil
37
38
  }
38
39
 
39
40
  $USAGE = "Usage: ppool [options] COMMAND ARGS..."
@@ -47,6 +48,7 @@ OptionParser.new do |opts|
47
48
  opts.on('-t', '--time TIME', 'Time limit') { |v| options[:timespec] = v }
48
49
  opts.on('-b', '--basic', 'Basic (non curses) verion') { |v| options[:basic] = true}
49
50
  opts.on('-r', '--rmlogs', 'Remove logs for processes that exited successfully') { |v| options[:rmlogs] = true}
51
+ opts.on('-a', '--average NUM', 'Number of processes used to calculate average elapsed time') { |v| options[:average_size] = v }
50
52
  opts.on('-l', '--logdir DIR', 'Log directory') { |v| options[:logdir] = v }
51
53
 
52
54
  opts.on("-h", "--help", "Show this message") {
@@ -69,6 +71,7 @@ end
69
71
 
70
72
  size = options[:size].to_i
71
73
  delay = options[:delay].to_i
74
+ average_size = options[:average_size].to_i
72
75
 
73
76
  begin
74
77
  time = options[:timespec] == nil ? nil : PPool.convert_time_to_secs(options[:timespec])
@@ -84,5 +87,5 @@ else
84
87
  controller = PPool::CursesProcessController.new(size, delay, command, time, logdir, options[:rmlogs])
85
88
  end
86
89
 
87
- PPool::ProcessPool.new(controller).run
90
+ PPool::ProcessPool.new(controller, average_size).run
88
91
 
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # MIT License
3
3
  #
4
- # Copyright (c) 2016 Paul Taylor
4
+ # Copyright (c) 2016, 2017 Paul Taylor
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the "Software"), to deal
@@ -30,4 +30,5 @@ require "shell_process_controller.rb"
30
30
  require "timed_process_controller.rb"
31
31
  require "terminal_process_controller.rb"
32
32
  require "curses_process_controller.rb"
33
+ require "time_stats.rb"
33
34
 
@@ -26,15 +26,13 @@ module PPool
26
26
 
27
27
  class ProcessPool
28
28
 
29
- def initialize(controller)
29
+ def initialize(controller, average_size)
30
30
  @controller = controller
31
+ @time_stats = TimeStats.new(average_size)
31
32
  @active_processes = 0
32
33
  @started_count = 0
33
34
  @ended_count = 0
34
35
  @errors = 0
35
- @process_start_time = {}
36
- @avg_elapsed_time = 0
37
- @total_elapsed_time = 0
38
36
  end
39
37
 
40
38
 
@@ -55,7 +53,7 @@ module PPool
55
53
  @controller.run_process
56
54
  end
57
55
 
58
- @process_start_time[pid] = Time.now
56
+ @time_stats.process_started(pid)
59
57
 
60
58
  @active_processes = @active_processes + 1
61
59
  @controller.process_started(pid, @active_processes)
@@ -70,14 +68,14 @@ module PPool
70
68
  pidStatus = Process.wait2(-1, Process::WNOHANG)
71
69
  if pidStatus != nil
72
70
  endedPid = pidStatus[0]
73
- @total_elapsed_time = @total_elapsed_time + (Time.now - @process_start_time.delete(endedPid)) * 1000
71
+ @time_stats.process_ended(endedPid)
72
+
74
73
  @controller.process_ended(endedPid, pidStatus[1].exitstatus)
75
74
  @active_processes = @active_processes - 1
76
75
  @ended_count = @ended_count + 1
77
76
  if pidStatus[1].exitstatus != 0
78
77
  @errors = @errors + 1
79
78
  end
80
- @avg_elapsed_time = (@total_elapsed_time / @ended_count).round()
81
79
  else
82
80
  doneWaiting = true
83
81
  end
@@ -102,7 +100,7 @@ module PPool
102
100
  :processes_started => @started_count,
103
101
  :processes_ended => @ended_count,
104
102
  :errors => @errors,
105
- :avg_elapsed_time => @avg_elapsed_time
103
+ :avg_elapsed_time => @time_stats.average_elapsed_time
106
104
  })
107
105
  end
108
106
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ppool
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Taylor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-01 00:00:00.000000000 Z
11
+ date: 2017-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: curses
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  version: '0'
104
104
  requirements: []
105
105
  rubyforge_project:
106
- rubygems_version: 2.6.8
106
+ rubygems_version: 2.5.2
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Pool of processes running a single command