ppool 1.3.0 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f33f56093a51f35a5bb82a4c12827e4a94a6bafd
4
- data.tar.gz: 52427eb4989a3af0140cf7ccf72c7c52b0a66088
3
+ metadata.gz: 3d2548c9a28db03e3abdc552d6fc3432d58dc71a
4
+ data.tar.gz: 5813e7a4b5c948309d05ccd4981083f282cf633e
5
5
  SHA512:
6
- metadata.gz: ef90815503d6e5a21ff91657cbb2bb1063f41cfd4221dcb77a30e61c8667d4da0e2fceda24ed65755dd7d1f044cc6db3efcf4d3540f0b587779ba9ec9c4eaceb
7
- data.tar.gz: 34e6d34f09a24d1ea8895a15cd14b6dfab398672753e8f02100901a244bb04f8b23b19a49b01432f65130771e76628787912212cf7f709d39eb583109ee936d7
6
+ metadata.gz: b4b18fb2de4b750e3457fff0db63a0d6bb08b4d27ccc562a0e8ed366582711bb30a14863b3b7712f01f4310471222b3e94054a00a717e1a5c743129b7fbb70a3
7
+ data.tar.gz: 32706e46ae2dfdb5aee17d72dd05fa5eb9edba49e506327cda65ffd14c961ebf4f483881d6a33d4fa0771edba5bbfd088a4972ff3c4a69d5bab66c69b7a68c2d
@@ -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
@@ -43,21 +43,23 @@ module PPool
43
43
 
44
44
  @win.attron(Curses.color_pair(3)|Curses::A_BOLD) {
45
45
  @win.setpos(2 , 5)
46
- @win.addstr("Time #{time_running}")
46
+ @win.addstr("Time #{time_running}")
47
47
  @win.setpos(3 , 5)
48
- @win.addstr("Size #{@size}")
48
+ @win.addstr("Size #{@size}")
49
49
  @win.setpos(4 , 5)
50
- @win.addstr("Running #{stats[:active_processes]}")
50
+ @win.addstr("Running #{stats[:active_processes]}")
51
51
  @win.setpos(5 , 5)
52
- @win.addstr("Started #{stats[:processes_started]}")
52
+ @win.addstr("Started #{stats[:processes_started]}")
53
53
  @win.setpos(6 , 5)
54
- @win.addstr("Ended #{stats[:processes_ended]}")
54
+ @win.addstr("Ended #{stats[:processes_ended]}")
55
55
  @win.setpos(7 , 5)
56
- @win.addstr("Errors #{stats[:errors]}")
56
+ @win.addstr("Avg Elapsed Time #{stats[:avg_elapsed_time]} (ms)")
57
57
  @win.setpos(8 , 5)
58
- @win.addstr("Logs #{@logdir}")
58
+ @win.addstr("Errors #{stats[:errors]}")
59
59
  @win.setpos(9 , 5)
60
- @win.addstr(" #{@msg}")
60
+ @win.addstr("Logs #{@logdir}")
61
+ @win.setpos(10 , 5)
62
+ @win.addstr(" #{@msg}")
61
63
  }
62
64
 
63
65
  process_keys
@@ -106,14 +108,15 @@ module PPool
106
108
  Curses.close_screen
107
109
 
108
110
  puts ""
109
- puts "Time #{time_running}"
110
- puts "Size #{@size}"
111
- puts "Running #{@last_stats[:active_processes]}"
112
- puts "Started #{@last_stats[:processes_started]}"
113
- puts "Ended #{@last_stats[:processes_ended]}"
114
- puts "Errors #{@last_stats[:errors]}"
115
- puts "Logs #{@logdir}"
116
- puts " #{@msg}"
111
+ puts "Time #{time_running}"
112
+ puts "Size #{@size}"
113
+ puts "Running #{@last_stats[:active_processes]}"
114
+ puts "Started #{@last_stats[:processes_started]}"
115
+ puts "Ended #{@last_stats[:processes_ended]}"
116
+ puts "Avg Elapsed Time #{@last_stats[:avg_elapsed_time]}"
117
+ puts "Errors #{@last_stats[:errors]}"
118
+ puts "Logs #{@logdir}"
119
+ puts " #{@msg}"
117
120
  puts ""
118
121
 
119
122
  exit(0)
@@ -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
@@ -32,6 +32,9 @@ module PPool
32
32
  @started_count = 0
33
33
  @ended_count = 0
34
34
  @errors = 0
35
+ @process_start_time = {}
36
+ @avg_elapsed_time = 0
37
+ @total_elapsed_time = 0
35
38
  end
36
39
 
37
40
 
@@ -52,6 +55,7 @@ module PPool
52
55
  @controller.run_process
53
56
  end
54
57
 
58
+ @process_start_time[pid] = Time.now
55
59
 
56
60
  @active_processes = @active_processes + 1
57
61
  @controller.process_started(pid, @active_processes)
@@ -65,12 +69,15 @@ module PPool
65
69
  begin
66
70
  pidStatus = Process.wait2(-1, Process::WNOHANG)
67
71
  if pidStatus != nil
68
- @controller.process_ended(pidStatus[0], pidStatus[1].exitstatus)
72
+ endedPid = pidStatus[0]
73
+ @total_elapsed_time = @total_elapsed_time + (Time.now - @process_start_time.delete(endedPid)) * 1000
74
+ @controller.process_ended(endedPid, pidStatus[1].exitstatus)
69
75
  @active_processes = @active_processes - 1
70
76
  @ended_count = @ended_count + 1
71
77
  if pidStatus[1].exitstatus != 0
72
78
  @errors = @errors + 1
73
79
  end
80
+ @avg_elapsed_time = (@total_elapsed_time / @ended_count).round()
74
81
  else
75
82
  doneWaiting = true
76
83
  end
@@ -94,7 +101,8 @@ module PPool
94
101
  :active_processes => @active_processes,
95
102
  :processes_started => @started_count,
96
103
  :processes_ended => @ended_count,
97
- :errors => @errors
104
+ :errors => @errors,
105
+ :avg_elapsed_time => @avg_elapsed_time
98
106
  })
99
107
  end
100
108
 
@@ -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
@@ -47,12 +47,12 @@ module PPool
47
47
  if stats != @last_stats
48
48
  if @count % 20 == 0
49
49
 
50
- puts "----------------------------------------------"
51
- puts " Time | Size Active Started Ended Errors"
52
- puts "=============================================="
50
+ puts "----------------------------------------------------------"
51
+ puts " Time | Size Active Started Ended Errors Avg Elapsed"
52
+ puts "=========================================================="
53
53
 
54
54
  end
55
- puts(" %s | %4d %4d %4d %4d %4d\n" % [time_running, @size, stats[:active_processes], stats[:processes_started], stats[:processes_ended], stats[:errors]])
55
+ puts(" %s | %4d %4d %4d %4d %4d %4d\n" % [time_running, @size, stats[:active_processes], stats[:processes_started], stats[:processes_ended], stats[:errors], stats[:avg_elapsed_time]])
56
56
  @last_stats = stats
57
57
  @count = @count + 1
58
58
  end
@@ -68,25 +68,33 @@ module PPool
68
68
 
69
69
  def process_keys
70
70
 
71
- case read_ch
71
+ c = read_ch
72
+ case c
72
73
  when '+'
73
74
  inc_size
74
75
  @last_stats = {}
75
- puts ""
76
+ erase_input
76
77
  when '-'
77
78
  dec_size
78
79
  @last_stats = {}
79
- puts ""
80
+ erase_input
81
+ when '0'..'9'
82
+ set_size(c.to_i)
83
+ erase_input
80
84
  when 'q', 'Q'
81
85
  finishing
82
86
  @last_stats = {}
83
- puts ""
87
+ erase_input
84
88
  when 'x', 'X'
85
89
  terminate
86
90
  end
87
91
 
88
92
  end
89
93
 
94
+ def erase_input
95
+ puts "\r "
96
+ end
97
+
90
98
  def read_ch
91
99
  begin
92
100
  system("stty raw")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ppool
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Taylor
@@ -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.5.2
106
+ rubygems_version: 2.6.8
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Pool of processes running a single command