Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Dec 2, 2021. It is now read-only.

Commitf6a171f

Browse files
committed
spinner curio example in chapter 18b
1 parent2832de1 commitf6a171f

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

‎18b-async-await/README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Sample code for Chapter 18 - "Concurrency with asyncio"
1+
Refactored sample code for Chapter 18 - "Concurrency with asyncio"
22

33
From the book "Fluent Python" by Luciano Ramalho (O'Reilly, 2015)
44
http://shop.oreilly.com/product/0636920032519.do

‎18b-async-await/spinner_curio.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/usr/bin/env python3
2+
3+
# spinner_curio.py
4+
5+
# credits: Example by Luciano Ramalho inspired by
6+
# Michele Simionato's multiprocessing example in the python-list:
7+
# https://mail.python.org/pipermail/python-list/2009-February/538048.html
8+
9+
importcurio
10+
11+
importitertools
12+
importsys
13+
14+
15+
asyncdefspin(msg):# <1>
16+
write,flush=sys.stdout.write,sys.stdout.flush
17+
forcharinitertools.cycle('|/-\\'):
18+
status=char+' '+msg
19+
write(status)
20+
flush()
21+
write('\x08'*len(status))
22+
try:
23+
awaitcurio.sleep(.1)# <2>
24+
exceptcurio.CancelledError:# <3>
25+
break
26+
write(' '*len(status)+'\x08'*len(status))
27+
28+
29+
asyncdefslow_function():# <4>
30+
# pretend waiting a long time for I/O
31+
awaitcurio.sleep(3)# <5>
32+
return42
33+
34+
35+
asyncdefsupervisor():# <6>
36+
spinner=awaitcurio.spawn(spin('thinking!'))# <7>
37+
print('spinner object:\n ',repr(spinner))# <8>
38+
result=awaitslow_function()# <9>
39+
awaitspinner.cancel()# <10>
40+
returnresult
41+
42+
43+
defmain():
44+
result=curio.run(supervisor)# <12>
45+
print('Answer:',result)
46+
47+
48+
if__name__=='__main__':
49+
main()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp