Es sei denn, Sie etwas zu tun, dass Ihr Prozess von sys.stdout
(seltenem, aber plausibel) oder sys.stderr
(deutlich seltener, aber immer noch technisch nicht unmöglich) trennen würde, Ihre Idee nur eine print-Anweisung in my_fun
setzen sollte gut funktionieren.
Natürlich werden Sie nicht in der Lage sein, das zu tun Fortschritt Mitte Ausdruck in my_fun
loggt sein, wie wenn my_fun
einige other_fun
aufruft, die eine sehr lange Zeit in Anspruch nimmt. In diesem Fall müssten Sie den Ausdruck in other_fun
setzen. Wenn Sie beispielsweise für jede Zeile einzeln etwas tun, können Sie einen Ausdruck irgendwo in die entsprechende Schleife einfügen und sagen, wie viele Zeilen relativ einfach ausgefüllt wurden. Zählen Sie einfach, und drucken Sie die Nummer (möglicherweise sys.stderr
oder ein Logger, anstelle von sys.stdout
, wenn Sie sys.stdout
für etwas anderes verwenden) jedes Mal, wenn es ein Vielfaches von, sagen wir, 1000 (oder 10.000 oder 100.000 - a Nummer, die für Ihre Verwendung funktioniert). Drucken Sie nicht jede Zeile - sie wird zu schnell verwischen, um tatsächlich zu lesen, wenn eine einzelne Zeile schnell verarbeitet wird und Sie am Ende möglicherweise genug Zeit für das Drucken aufwenden, wodurch die Verarbeitung erheblich verlangsamt wird.
Wenn Sie nur eine einzige Operation ausführen, die alle Daten ohne Schleife berücksichtigen muss, können Sie weiterhin Fortschrittsberichte innerhalb der Funktion erstellen, aber es gibt keine echte Möglichkeit, eine "Anzahl von Zeilen" zu erhalten abgeschlossen "Statistik und es wird wahrscheinlich schwieriger sein, einen genauen Prozentsatz zu erhalten.
können Sie ein Beispiel zum Drucken des Prozentsatzes des Fortschritts in my_fun() angeben? Da es von Lambda aufgerufen wird, weiß ich nicht, wie es den gesamten Job-Fortschritt verfolgt ... – Edamame
Nicht genauer gesagt, was 'my_fun' eigentlich ist. Fügen Sie einfach eine Druckanweisung an dem Punkt in der Funktion ein, an dem sie etwas drucken soll. Vielleicht geben Sie der Funktion ein Attribut, mit dem Sie rechnen können, um nicht bei jeder Wiederholung zu drucken. –