Exemplo n.º 1
0
    def work(self, update=1):
        self.done += update

        if time.time() - self.last_update > self.update_every:
            self.last_update = time.time()
            time_used = time.time() - self.start_time
            percent_done = float(self.done)/self.todo

            if percent_done:
                total_time = time_used / percent_done
            else:
                total_time = 0
            remaining_time = total_time * (1-percent_done)
            speed_per_sec = self.done/time_used
            if int(speed_per_sec) < 4:
                self.speed_text = "%s/min" % format_number(60*speed_per_sec)
            else:
                self.speed_text = "%s/sec" % format_number(speed_per_sec)

            bars = int(percent_done * TOTAL_BARS)

            self.clear_line()
            self.progress("%s: %s%s %5.1f%% in %s [ %s ] [ ETA %8s ]\r" % (
                self.msg, "="*bars, " "*(TOTAL_BARS-bars),
                100*percent_done,
                format_time_delta(time_used), self.speed_text,
                format_time_delta(remaining_time)))
Exemplo n.º 2
0
    def finish(self):
        assert self.done == self.todo

        self.clear_line()
        self.progress("%s: %s %d/%d in %s [ %s ]\n" % (
            self.msg, "="*TOTAL_BARS,
            self.done, self.todo,
            format_time_delta(time.time()-self.start_time),
            self.speed_text))
Exemplo n.º 3
0
 def test_format_time_delta(self):
     self.assertEqual(format_time_delta(0), "0s")
     self.assertEqual(format_time_delta(59), "59s")
     self.assertEqual(format_time_delta(60), "1m 0s")
     self.assertEqual(format_time_delta(71), "1m 11s")
     self.assertEqual(format_time_delta(3600), "1h 0m")
     self.assertEqual(format_time_delta(24*3600), "1d 0h")
Exemplo n.º 4
0
 def run(self, roots):
     current_time = time.time()
     self.start_time = current_time
     self.next_commit = current_time + self.commit_every
     self.next_full_stats = current_time + self.full_stats_every
     self.progress("Legend: .=new, m=modified, d=deleted, " +
                   "P=permission problem, E=some unknown error\n", 2)
     for root in roots:
         for dirpath, dirnames, filenames in os.walk(root):
             self.index_one_directory(dirpath, dirnames, filenames)
     self.db.commit()
     if self.verbose_progress < 3:
         self.progress("\n")
     self.show_full_stats("Final stats")
     self.progress("Used time: %s\n" %
                   format_time_delta(time.time()-self.start_time), 3)
Exemplo n.º 5
0
    def index_one_directory(self, dirpath, dirnames, filenames):
        current_time = time.time()
        if self.full_stats_every and current_time > self.next_full_stats:
            self.next_full_stats = current_time + self.full_stats_every
            runtime = time.time()-self.start_time
            self.show_full_stats("Stats after %s %s" %
                                 (format_time_delta(runtime), dirpath))

        if current_time > self.next_commit:
            self.next_commit = current_time + self.commit_every
            self.db.commit()

        self.dirs_visited += 1
        dirnames.sort()
        filenames.sort()
        self.skipped_files += remove_excluded_names(
            filenames, self.compiled_file_excludes)
        self.skipped_dirs += remove_excluded_names(
            dirnames, self.compiled_dir_excludes)
        self.progress("[")

        self.db.begin()

        dirid = self.db.get_or_insert_dir(abspath(dirpath))

        for fileobj in self.db.file.find(dirid=dirid):
            if fileobj.name not in filenames:
                self.progress("d")
                self.db.file.delete(fileobj)
                self.deleted_files += 1

        start = time.time()
        for filename in filenames:
            if start and time.time() > start+self.dir_warn_threshold:
                self.progress(" %s " % dirpath)
                start = None

            self.index_one_file(dirpath, filename, dirid)
        self.progress("]")
 def report_time_used_per_type(self):
     for i in [1, 2, 3, 4, 5]:
         time_used = format_time_delta(self.time_per_type[i])
         self.progress("  hash type %d used %s\n" % (i, time_used))