Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.79 KB | None | 0 0
  1. import asyncio
  2.  
  3. async def factorial(name, number):
  4.     f = 1
  5.     for i in range(2, number+1):
  6.         print("Task %s: Compute factorial(%s)..." % (name, i))
  7.         f *= i
  8.         await asyncio.sleep(1)
  9.         print("Task %s: factorial(%s) = %s" % (name, number, f))
  10.         yield f
  11.  
  12. async def collect_one_source(name, number):
  13.     return [f async for f in factorial(name, number)]
  14.  
  15. async def collect_everything():
  16.     futures = [
  17.         collect_one_source("A", 2),
  18.         collect_one_source("B", 3),
  19.         collect_one_source("C", 4),
  20.     ]
  21.     result = [
  22.         await future
  23.         for future in asyncio.as_completed(futures)
  24.     ]
  25.     result.sort()
  26.     return result
  27.  
  28. loop = asyncio.get_event_loop()
  29. loop.run_until_complete(asyncio.gather(
  30.     factorial("A", 2),
  31.     factorial("B", 3),
  32.     factorial("C", 4),
  33. ))
  34. loop.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement