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 +4 -4
- data/bin/ppool +6 -3
- data/lib/ppool.rb +2 -1
- data/lib/process_pool.rb +6 -8
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f09e2d6b93728af6217c3215ba81e6b9c1b38417
|
4
|
+
data.tar.gz: 8422bbc116f119e168191fc5dede318f8d339488
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
|
data/lib/ppool.rb
CHANGED
@@ -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
|
|
data/lib/process_pool.rb
CHANGED
@@ -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
|
-
@
|
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
|
-
@
|
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 => @
|
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
|
+
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-
|
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.
|
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
|