ppool 1.4.0 → 1.5.0
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.
- 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
|