Skip to content

Instantly share code, notes, and snippets.

@polkovnikov
Last active September 16, 2020 16:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save polkovnikov/53b8128e5c6386a42fc85be898cf9ed1 to your computer and use it in GitHub Desktop.
Save polkovnikov/53b8128e5c6386a42fc85be898cf9ed1 to your computer and use it in GitHub Desktop.
Progress Bar Iterator-Wrapping Helper Function for enlighten library
# 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)
@polkovnikov
Copy link
Author

You may see live screen-cast of this script:
asciicast

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment