Skip to content

Commit d7e37ad

Browse files
committed
updated threading example to use Event object instead of user defined Signal instance
1 parent e4f58fe commit d7e37ad

File tree

2 files changed

+10
-20
lines changed

2 files changed

+10
-20
lines changed

‎18-asyncio/spinner_thread.py‎

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,14 @@
1111
importsys
1212

1313

14-
classSignal: # <1>
15-
go=True
16-
17-
18-
defspin(msg, signal): # <2>
14+
defspin(msg, done): # <2>
1915
write, flush=sys.stdout.write, sys.stdout.flush
2016
forcharinitertools.cycle('|/-\\'): # <3>
2117
status=char+' '+msg
2218
write(status)
2319
flush()
2420
write('\x08'*len(status)) # <4>
25-
time.sleep(.1)
26-
ifnotsignal.go: # <5>
21+
ifdone.wait(.1): # <5>
2722
break
2823
write(' '*len(status) +'\x08'*len(status)) # <6>
2924

@@ -35,13 +30,13 @@ def slow_function(): # <7>
3530

3631

3732
defsupervisor(): # <9>
38-
signal=Signal()
33+
done=threading.Event()
3934
spinner=threading.Thread(target=spin,
40-
args=('thinking!', signal))
35+
args=('thinking!', done))
4136
print('spinner object:', spinner) # <10>
4237
spinner.start() # <11>
4338
result=slow_function() # <12>
44-
signal.go=False# <13>
39+
done.set()# <13>
4540
spinner.join() # <14>
4641
returnresult
4742

‎18b-async-await/spinner_thread.py‎

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,14 @@
1111
importsys
1212

1313

14-
classSignal: # <1>
15-
go=True
16-
17-
18-
defspin(msg, signal): # <2>
14+
defspin(msg, done): # <2>
1915
write, flush=sys.stdout.write, sys.stdout.flush
2016
forcharinitertools.cycle('|/-\\'): # <3>
2117
status=char+' '+msg
2218
write(status)
2319
flush()
2420
write('\x08'*len(status)) # <4>
25-
time.sleep(.1)
26-
ifnotsignal.go: # <5>
21+
ifdone.wait(.1): # <5>
2722
break
2823
write(' '*len(status) +'\x08'*len(status)) # <6>
2924

@@ -35,13 +30,13 @@ def slow_function(): # <7>
3530

3631

3732
defsupervisor(): # <9>
38-
signal=Signal()
33+
done=threading.Event()
3934
spinner=threading.Thread(target=spin,
40-
args=('thinking!', signal))
35+
args=('thinking!', done))
4136
print('spinner object:', spinner) # <10>
4237
spinner.start() # <11>
4338
result=slow_function() # <12>
44-
signal.go=False# <13>
39+
done.set()# <13>
4540
spinner.join() # <14>
4641
returnresult
4742

0 commit comments

Comments
(0)