From d7e37ad0fdff8b5fc65e11414a353a6f3b407925 Mon Sep 17 00:00:00 2001 From: Luciano Ramalho Date: Sun, 5 Mar 2017 14:22:20 -0300 Subject: [PATCH] updated threading example to use Event object instead of user defined Signal instance --- 18-asyncio/spinner_thread.py | 15 +++++---------- 18b-async-await/spinner_thread.py | 15 +++++---------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/18-asyncio/spinner_thread.py b/18-asyncio/spinner_thread.py index 23feb8f..a907a25 100644 --- a/18-asyncio/spinner_thread.py +++ b/18-asyncio/spinner_thread.py @@ -11,19 +11,14 @@ import time import sys -class Signal: # <1> - go = True - - -def spin(msg, signal): # <2> +def spin(msg, done): # <2> write, flush = sys.stdout.write, sys.stdout.flush for char in itertools.cycle('|/-\\'): # <3> status = char + ' ' + msg write(status) flush() write('\x08' * len(status)) # <4> - time.sleep(.1) - if not signal.go: # <5> + if done.wait(.1): # <5> break write(' ' * len(status) + '\x08' * len(status)) # <6> @@ -35,13 +30,13 @@ def slow_function(): # <7> def supervisor(): # <9> - signal = Signal() + done = threading.Event() spinner = threading.Thread(target=spin, - args=('thinking!', signal)) + args=('thinking!', done)) print('spinner object:', spinner) # <10> spinner.start() # <11> result = slow_function() # <12> - signal.go = False # <13> + done.set() # <13> spinner.join() # <14> return result diff --git a/18b-async-await/spinner_thread.py b/18b-async-await/spinner_thread.py index 23feb8f..a907a25 100644 --- a/18b-async-await/spinner_thread.py +++ b/18b-async-await/spinner_thread.py @@ -11,19 +11,14 @@ import time import sys -class Signal: # <1> - go = True - - -def spin(msg, signal): # <2> +def spin(msg, done): # <2> write, flush = sys.stdout.write, sys.stdout.flush for char in itertools.cycle('|/-\\'): # <3> status = char + ' ' + msg write(status) flush() write('\x08' * len(status)) # <4> - time.sleep(.1) - if not signal.go: # <5> + if done.wait(.1): # <5> break write(' ' * len(status) + '\x08' * len(status)) # <6> @@ -35,13 +30,13 @@ def slow_function(): # <7> def supervisor(): # <9> - signal = Signal() + done = threading.Event() spinner = threading.Thread(target=spin, - args=('thinking!', signal)) + args=('thinking!', done)) print('spinner object:', spinner) # <10> spinner.start() # <11> result = slow_function() # <12> - signal.go = False # <13> + done.set() # <13> spinner.join() # <14> return result