作家
登录

Python中的异步编程:Asyncio

作者: 来源: 2017-08-02 15:55:18 阅读 我要评论

异步和同步的代码比较

如今我们实际验证异步模式的切实有效,我会比较两段 python 脚本,这两个脚本除了sleep 办法外,其余部分完全雷同。在第一个脚本里,我会用标准的 time.sleep 办法,在第二个脚本里应用 asyncio.sleep 的异步办法。

这里应用 Sleep 是因为它是一个用来展示异步办法若何操作 I/O 的最简单办法。

应用同步 sleep 办法的代码:

  1. import asyncio   
  2.  
  3. import time   
  4.  
  5. from datetime import datetime 
  6.  
  7.   
  8.  
  9.   
  10.  
  11. async def custom_sleep():   
  12.  
  13.     print('SLEEP', datetime.now()) 
  14.  
  15.     time.sleep(1) 
  16.  
  17.   
  18.  
  19. async def factorial(name, number):   
  20.  
  21.     f = 1 
  22.  
  23.     for i in range(2, number+1): 
  24.  
  25.         print('Task {}: Compute factorial({})'.format(name, i)) 
  26.  
  27.         await custom_sleep() 
  28.  
  29.         f *= i 
  30.  
  31.     print('Task {}: factorial({}) is {}\n'.format(name, number, f)) 
  32.  
  33.   
  34.  
  35.   
  36.  
  37. start = time.time()   
  38.  
  39. loop = asyncio.get_event_loop() 
  40.  
  41.   
  42.  
  43. tasks = [   
  44.  
  45.     asyncio.ensure_future(factorial("A", 3)), 
  46.  
  47.     asyncio.ensure_future(factorial("B", 4)), 
  48.  
  49.  
  50. loop.run_until_complete(asyncio.wait(tasks))   
  51.  
  52. loop.close() 
  53.  
  54.   
  55.  
  56. end = time.time()   
  57.  
  58. print("Total time: {}".format(end - start))  

脚本输出:

  1. Task A: Compute factorial(2)   
  2.  
  3. SLEEP 2017-04-06 13:39:56.207479   
  4.  

      推荐阅读

      使用Kdump检查Linux内核崩溃

    让我们先看一下 kdump 的根本应用办法,和 kdump/kexec 在内核中是若何实现。kdump 是获取崩溃的 Linux 内核转储的一种办法,然则想找到解释其应用和内部构造的文档可能有点艰苦。在本文中>>>详细阅读


    本文标题:Python中的异步编程:Asyncio

    地址:http://www.17bianji.com/lsqh/36515.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)