异步和同步的代码比较
如今我们实际验证异步模式的切实有效,我会比较两段 python 脚本,这两个脚本除了sleep 办法外,其余部分完全雷同。在第一个脚本里,我会用标准的 time.sleep 办法,在第二个脚本里应用 asyncio.sleep 的异步办法。
这里应用 Sleep 是因为它是一个用来展示异步办法若何操作 I/O 的最简单办法。
应用同步 sleep 办法的代码:
- import asyncio
- import time
- from datetime import datetime
- async def custom_sleep():
- print('SLEEP', datetime.now())
- time.sleep(1)
- async def factorial(name, number):
- f = 1
- for i in range(2, number+1):
- print('Task {}: Compute factorial({})'.format(name, i))
- await custom_sleep()
- f *= i
- print('Task {}: factorial({}) is {}\n'.format(name, number, f))
- start = time.time()
- loop = asyncio.get_event_loop()
- tasks = [
- asyncio.ensure_future(factorial("A", 3)),
- asyncio.ensure_future(factorial("B", 4)),
- ]
- loop.run_until_complete(asyncio.wait(tasks))
- loop.close()
- end = time.time()
- print("Total time: {}".format(end - start))
脚本输出:
- Task A: Compute factorial(2)
- SLEEP 2017-04-06 13:39:56.207479
推荐阅读
让我们先看一下 kdump 的根本应用办法,和 kdump/kexec 在内核中是若何实现。kdump 是获取崩溃的 Linux 内核转储的一种办法,然则想找到解释其应用和内部构造的文档可能有点艰苦。在本文中>>>详细阅读
本文标题:Python中的异步编程:Asyncio
地址:http://www.17bianji.com/lsqh/36515.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示