diff --git a/proxywatchd.py b/proxywatchd.py index d419c14..72e701a 100644 --- a/proxywatchd.py +++ b/proxywatchd.py @@ -117,18 +117,37 @@ class WorkerThread(): self.thread = threading.Thread(target=self.workloop) self.thread.start() def workloop(self): + def try_div(a, b): + if b != 0: return a/float(b) + return 0 + success_count = 0 + job_count = 0 + duration_total = 0 + duration_success_total = 0 while True: if len(self.workqueue): job = self.workqueue.pop() + nao = time.time() job.run() + spent = time.time() - nao + if job.failcount == 0: + duration_success_total += spent + success_count += 1 + job_count += 1 + duration_total += spent self.workdone.append(job) elif not self.thread: break if self.done.is_set(): break time.sleep(0.01) if self.thread: - sys.stdout.write('%s/%s\tthread terminated\r' % (time.strftime('%H:%M:%S', time.gmtime()), self.id)) - sys.stdout.flush() + succ_rate = try_div(success_count, job_count)*100 + avg_succ_t = try_div(duration_success_total, success_count) + avg_fail_t = try_div(duration_total-duration_success_total, job_count-success_count) + avg_t = try_div(duration_total, job_count) + _log("terminated, %d/%d (%.2f%%), avg.time S/F/T %.2f, %.2f, %.2f" \ + % (success_count, job_count, succ_rate, avg_succ_t, avg_fail_t, avg_t) \ + , self.id) class Proxywatchd():