Last active
September 16, 2020 16:18
-
-
Save polkovnikov/53b8128e5c6386a42fc85be898cf9ed1 to your computer and use it in GitHub Desktop.
Progress Bar Iterator-Wrapping Helper Function for enlighten library
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Iterator-Wrapping Helper Function for enlighten library | |
# Needs: python -m pip install enlighten | |
def pit(it, *pargs, **nargs): | |
import enlighten | |
global __pit_man__ | |
try: | |
__pit_man__ | |
except NameError: | |
__pit_man__ = enlighten.get_manager() | |
man = __pit_man__ | |
try: | |
it_len = len(it) | |
except: | |
it_len = None | |
try: | |
ctr = None | |
for i, e in enumerate(it): | |
if i == 0: | |
ctr = man.counter(*pargs, **{**dict(leave = False, total = it_len), **nargs}) | |
yield e | |
ctr.update() | |
finally: | |
if ctr is not None: | |
ctr.close() | |
# Usage | |
import time | |
def Generator(n): | |
for i in range(n): | |
yield i | |
for i in pit(range(2), color = 'red'): | |
for j in pit(range(3), color = 'green'): | |
for k in pit(Generator(4), total = 4, color = 'blue'): | |
for l in pit(Generator(5)): | |
print(i, j, k, l) | |
time.sleep(0.05) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You may see live screen-cast of this script: