Python考试题--第68道题干--什么是协程,协程的两个运行作业的函数如何使用--2022年04月23日
原创目录
1.和谐的定义:
1、协程(co-routine):
也称为微线程,它是一种多方协作的工作方式。现任遗嘱执行人自愿放弃(yield)控制流并记住其当前状态,以便在控制流返回时可以从最后一次让步中恢复(resume)执行。简而言之,串联的核心思想在于执行者对控制流的理解。 “主动放弃” 和 “恢复”。相对于,此类的线程。 “抢占式调度” 就而言,串联是一个 “协作式调度” 方式。

2协调进程的优势:
- 执行效率极高,因为子例程切换(函数)不是线程切换,由程序本身控制,没有切换线程的开销。因此,与多线程相比,线程越多,级联性能优势越明显。
- 不需要多线程的锁定机制,因为只有一个线程,没有并发的写变量冲突,在控制共享资源时也不需要锁定,所以执行效率高很多。
3协调的缺点:
和谐性可以处理IO密集程序的效率问题,但处理CPU集约化不是其优势所在,如要充分利用CPU利用可与多进程相结合+协程。
2.示例代码演示:
1,最简单的串联:
import asyncio
async def main():
print(hello)
await asyncio.sleep(2)
print(world)
asyncio.run(main()) # 运行连接并这样写它。
2,运行该任务的两个函数:run、create_task
import asyncio
import time
async def say_after(delay1, delay2, what):
await asyncio.sleep(delay1)
print(what)
await asyncio.sleep(delay2)
async def myfun():
print(f开始时间:{time.strftime("%X")})
await say_after(1,1, hello)
await say_after(2,2, world)
print(f执行结束:{time.strftime("%X")})
asyncio.run(myfun())
# create_task 并发运行异步任务的函数
async def myfun1():
task1 = asyncio.create_task(say_after(1,1,hello))
task2 = asyncio.create_task(say_after(2,2, "world"))
print(f"开始时间:{time.strftime(%X)}")
await task1
await task2
print(f执行结束:{time.strftime("%X")})
asyncio.run(myfun1())
串联,也称为微线程,使用async修改要运行的函数,运行拼接函数时需要使用该函数。await。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123



