fork download
  1. import asyncio
  2. import time
  3.  
  4.  
  5. def sync_block(n):
  6. temp = 0
  7. for i in range(n):
  8. for j in range(n//100):
  9. temp = (i + j) * 2
  10. print('Sync block finished')
  11.  
  12.  
  13. async def async_block(n):
  14. temp = 0
  15. for i in range(n):
  16. if n % 1000 == 0:
  17. await asyncio.sleep(0)
  18. for j in range(n//100):
  19. temp = (i + j) * 2
  20. print('Async block finished')
  21.  
  22.  
  23. async def async_block_stop(n):
  24. sync_block(n)
  25.  
  26.  
  27. async def minitask(name):
  28. for _ in range(1000):
  29. pass
  30. print(f'Task {name} finished')
  31.  
  32.  
  33. async def test1():
  34. futures = [async_block(50_000)]
  35. for i in range(10):
  36. futures.append(minitask(i))
  37.  
  38. await asyncio.gather(*futures)
  39. print('FINISHED')
  40.  
  41.  
  42. async def test2():
  43. futures = [async_block_stop(50_000)]
  44. for i in range(10):
  45. futures.append(minitask(i))
  46.  
  47. await asyncio.gather(*futures)
  48. print('FINISHED')
  49.  
  50.  
  51. def main():
  52. asyncio.run(test1())
  53. asyncio.run(test2())
  54.  
  55.  
  56. if __name__ == '__main__':
  57. main()
  58.  
Success #stdin #stdout 3.58s 16216KB
stdin
Standard input is empty
stdout
Task 0 finished
Task 1 finished
Task 2 finished
Task 3 finished
Task 4 finished
Task 5 finished
Task 6 finished
Task 7 finished
Task 8 finished
Task 9 finished
Async block finished
FINISHED
Sync block finished
Task 0 finished
Task 1 finished
Task 2 finished
Task 3 finished
Task 4 finished
Task 5 finished
Task 6 finished
Task 7 finished
Task 8 finished
Task 9 finished
FINISHED