Skip to content

Instantly share code, notes, and snippets.

Created November 12, 2015 16:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save anonymous/c4ad2bbe2d5552af05c2 to your computer and use it in GitHub Desktop.
Save anonymous/c4ad2bbe2d5552af05c2 to your computer and use it in GitHub Desktop.
Simple Python CLI Spinner
#!/usr/bin/env python
import itertools
import sys
import time
import threading
class Spinner(object):
spinner_cycle = itertools.cycle(['-', '/', '|', '\\'])
def __init__(self):
self.stop_running = threading.Event()
self.spin_thread = threading.Thread(target=self.init_spin)
def start(self):
self.spin_thread.start()
def stop(self):
self.stop_running.set()
self.spin_thread.join()
def init_spin(self):
while not self.stop_running.is_set():
sys.stdout.write(self.spinner_cycle.next())
sys.stdout.flush()
time.sleep(0.25)
sys.stdout.write('\b')
#!/usr/bin/env python
def do_work():
time.sleep(3)
print 'starting work'
spinner = Spinner()
spinner.start()
do_work()
spinner.stop()
print 'all done!'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment