NAME
Prty::Progress - Berechne Fortschrittsinformation
BASE CLASS
SYNOPSIS
Mit print:
use Prty::Progress;
$| = 1;
my $n = 5;
my $p = Prty::Progress->new($n);
for my $i (1 .. $n) {
sleep 1;
print $p->msg($i,'i/n x% t/t(t) x/s t/1');
}
print $p->msg;
Mit R1::Log2:
use R1::Log2;
use Prty::Progress;
my $log = R1::Log2->new(\*STDOUT);
my $msg;
my $n = 5;
my $p = Prty::Progress->new($n);
for my $i (1 .. $n) {
sleep 1;
$msg = sprintf '%s %s %s %s %s',$p->info($i);
$log->printCr($msg);
}
$log->printLn($msg);
Ohne Gesamtanzahl der Schritte. Anmerkungen:
die Ausgabe der Prozentangabe wird unterdrückt
alle Ausgaben erfolgen ohne Bezug zu einer Gesamtanzahl (statt Ausgabe I/N nur I, statt ZEIT/GESAMTZEIT(RESTZEIT) nur ZEIT)
*
use Prty::Progress;
$| = 1;
my $p = Prty::Progress->new;
for my $i (1 .. 5) {
print $pro->msg($i,'i/n x% t/t(t) x/h x/s t/1');
sleep 1;
}
print $p->msg;
1 0s 3600000/h 1000.00/s 0.00s/1\r
2 1s 7200/h 2.00/s 0.50s/1\r
3 2s 5400/h 1.50/s 0.67s/1\r
4 3s 4788/h 1.33/s 0.75s/1\r
5 4s 4500/h 1.25/s 0.80s/1\r
5 5s 3600/h 1.00/s 1.00s/1\r
ATTRIBUTES
- n
-
Gesamtzahl der Schritte
- t0
-
Startzeitpunkt
- i
-
Aktueller Schritt
- duration
-
Vergangene Zeit in Sekunden (mit Nachkommastellen)
- msg
-
Die letzte von msg() erzeugte Meldung.
METHODS
Konstruktor
new() - Konstruktor
Synopsis
$pi = $class->new($n,@opt);
Arguments
Options
- -show => $bool (Default: 1)
-
Die Methode liefert Meldungen. Mit -show=>0 kann die Ausgabe von Meldungen verhindert werden. Beispiel:
$pi = $class->new($n,-show=>$verbose);
Returns
Referenz auf Progress-Objekt
Schritt setzen
step() - Setze Progress-Objekt auf nächsten Schritt
Synopsis
$pi->step($i);
Arguments
Fortschritts- und Performance-Information
count() - Liefere "I/N"
Synopsis
$str = $pi->count;
Description
Liefere Stand in der Form "I/N". I ist die Anzahl der absolvierten Schritte, N ist die Anzahl der Gesamtschritte.
Liefere Stand in der Form "I", wenn die Anzahl der Gesamtschritte (N) nicht bekannt ist.
percent() - Liefere Verarbeitungsstand als Prozentsatz
Synopsis
$str = $pi->percent;
Description
Liefere Verarbeitungsstand in Prozent in der Form "X". Ist die Gesamtanzahl der Schritte nicht bekannt, liefere einen Leersting.
time() - Liefere "HhMmSs/HhMmSs(HhMmSs)"
Synopsis
$str = $pi->time;
Description
Liefere Zeitinformation in der Form "HhMmSs/HhMmSs(HhMmSs)". Der erste Teil ist die bislang verstrichene Zeit, der zweite Teil die geschätzte Gesamtzeit, der dritte Teil ist die geschätzte verbleibende Zeit.
Liefere die Zeitinformation in der Form "HhMmSs", wenn die Anzahl der Gesamtschritte (N) nicht bekannt ist.
performance() - Liefere Durchsatz
Synopsis
$str = $pi->performance;
$str = $pi->performance($prec);
Description
Liefere Durchsatz in der Form "X.XX" (Schritte pro Sekunde).
Arguments
timePerStep() - Liefere Zeit pro Schritt
Synopsis
$str = $pi->timePerStep;
$str = $pi->timePerStep($prec);
Description
Liefere Durchsatz in der Form "HhMmSs.x" (Zeit pro Schritt).
Arguments
Information mit einem Aufruf
info() - Liefere alle Fortschritts- und Performance-Information
Synopsis
($count,$percent,$time,$performance,$timePerStep) = $pi->info;
($count,$percent,$time,$performance,$timePerStep) = $pi->info($i);
Arguments
- $i
-
Setze auf Schritt $i. Ist $i nicht angegeben, wird kein neuer Schritt gesetzt, sondern die Information zum aktuellen Schritt geliefert.
Returns
- $count
-
Verarbeitungsstand in der Form "I/N". I ist die Anzahl der absolvierten Schritte, N ist die Anzahl der Gesamtschritte.
- $percent
-
Verarbeitungsstand in Prozent.
- $time
-
Zeitinformation in der Form "HhMmSs/HhMmSs". Der erste Teil ist die bislang verstrichene Zeit, der zweite Teil die geschätzte Gesamtzeit.
- $performance
-
Durchsatz in der Form "X.XX" (Schritte pro Sekunde).
- $timePerStep
-
Durchsatz in der Form "HhMmSs.x" (Zeit pro Schritt).
Meldung generieren
msg() - Erzeuge Fortschrittsmeldung
Synopsis
$str = $pi->msg;
$str = $pi->msg($fmt,@args);
$str = $pi->msg($i,$fmt,@args);
Description
Erzeuge eine Fortschrittsmeldung und liefere diese zurück.
Die Methode ist für die eine einzeilige Ausgabe konzipiert, die sich kontnuierlich überschreibt, bis das Ende der Verarbeitung erreicht ist. Die letzte Meldung bleibt stehen.
Die erste Form (ohne Parameter) liefert die beim letzten Aufruf produzierte Meldung - allerdings mit neu berechneten Durchschittswerten - noch einmal mit "\n" am Zeilenende.
Die zweite Form erzeugt die Meldung für den aktuellen Schritt und beendet sie mit "\r".
Die dritte Form bewirkt dasselbe wie 2), nur dass zuvor das Objekt auf Schritt $i gesetzt wird.
Ist bislang kein Schritt ausgeführt worden, liefert die Methode einen Leerstring ("").
Arguments
- $i
-
Setze Objekt auf Schritt $i. Ist $i nicht angegeben, wird kein neuer Schritt gesetzt, sondern die Information des aktuellen Schritts in die Meldung eingesetzt.
- $fmt
-
Formatelement für sprintf(), erweitert um folgende Platzhalter:
- @args
-
Argumente für sprintf-Platzhalter.
Returns
VERSION
1.111
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2017 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.