1
+ from unsync import unsync
1
2
import asyncio
2
3
import datetime
3
4
import math
9
10
def main ():
10
11
t0 = datetime .datetime .now ()
11
12
12
- loop = asyncio .get_event_loop ()
13
-
14
13
tasks = [
15
- loop . create_task ( compute_some () ),
16
- loop . create_task ( compute_some () ),
17
- loop . create_task ( compute_some () ),
18
- loop . create_task ( download_some () ),
19
- loop . create_task ( download_some () ),
20
- loop . create_task ( download_some_more () ),
21
- loop . create_task ( download_some_more () ),
22
- loop . create_task ( wait_some () ),
23
- loop . create_task ( wait_some () ),
24
- loop . create_task ( wait_some () ),
25
- loop . create_task ( wait_some () ),
14
+ compute_some (),
15
+ compute_some (),
16
+ compute_some (),
17
+ download_some (),
18
+ download_some (),
19
+ download_some_more (),
20
+ download_some_more (),
21
+ wait_some (),
22
+ wait_some (),
23
+ wait_some (),
24
+ wait_some (),
26
25
]
27
26
28
- loop . run_until_complete ( asyncio . gather ( * tasks ))
27
+ [ t . result () for t in tasks ]
29
28
30
29
dt = datetime .datetime .now () - t0
31
30
print ("Synchronous version done in {:,.2f} seconds." .format (dt .total_seconds ()))
32
31
33
32
34
- async def compute_some ():
33
+ @unsync (cpu_bound = True )
34
+ def compute_some ():
35
35
print ("Computing..." )
36
36
for _ in range (1 , 10_000_000 ):
37
37
math .sqrt (25 ** 25 + .01 )
38
38
39
39
40
+ @unsync ()
40
41
async def download_some ():
41
42
print ("Downloading..." )
42
43
url = 'https://talkpython.fm/episodes/show/174/coming-into-python-from-another-industry-part-2'
@@ -49,7 +50,8 @@ async def download_some():
49
50
print ("Downloaded (more) {:,} characters." .format (len (text )))
50
51
51
52
52
- async def download_some_more ():
53
+ @unsync ()
54
+ def download_some_more ():
53
55
print ("Downloading more ..." )
54
56
url = 'https://pythonbytes.fm/episodes/show/92/will-your-python-be-compiled'
55
57
resp = requests .get (url )
@@ -60,6 +62,7 @@ async def download_some_more():
60
62
print ("Downloaded {:,} characters." .format (len (text )))
61
63
62
64
65
+ @unsync ()
63
66
async def wait_some ():
64
67
print ("Waiting..." )
65
68
for _ in range (1 , 1000 ):
0 commit comments