Skip to content

Instantly share code, notes, and snippets.

@jikuja
Created August 5, 2017 07:34
Show Gist options
  • Save jikuja/a269f27303891cb4062733c3a23a2a1d to your computer and use it in GitHub Desktop.
Save jikuja/a269f27303891cb4062733c3a23a2a1d to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
"""
An example that demonstrates how `patch_stdout` works.
This makes sure that output from other threads doesn't disturb the rendering of
the prompt, but instead is printed nicely above the prompt.
"""
from __future__ import unicode_literals
from prompt_toolkit import prompt
import threading
import time
def main():
# Print a counter every second in another thread.
running = True
def thread():
i = 0
while running:
i += 1
print('i=%i' % i)
time.sleep(1)
t = threading.Thread(target=thread)
t.daemon = True
t.start()
# Now read the input. The print statements of the other thread
# should not disturb anything.
while True:
result = prompt('Say something: ', patch_stdout=True)
print('You said: %s' % result)
# Stop thread.
running = False
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment