Python协程的实现方法有哪些?.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Python协程的实现方法有哪些?

2.协程意义

在线程中如果遇到IO等待时间,线程不会傻等着,会利用空闲的时间去做其他事情,也就是进程异步执行。

#协程请求资源使用第三方库aiohttp

importaiohttp

3.异步编程

3.1时间循环

理解成一个死循环,去检测并执行某些代码

任务列表=[task1,task2...]

whileTrue:

for就绪任务in可执行任务列表:

for已完成任务in已完成任务列表:

从任务列表中删除

importasyncio

#生成一个书简循环

loop=asyncio.get_event_loop()

#将任务放到任务列表中

loop.run_until_complete(任务)

3.2案例

协程函数,

定义函数的时候,用asyncdef函数名

协程对象:执行协程函数的时候得到一个协程对象

asyncdeffunc():

pass

result=func()

注意:执行协程函数时得到的协程对象,函数内部代码不会执行

importasyncio

asyncdeffunc():

print(哈喽)

f=func()#协程对象

loop=asyncio.get_event_loop()#创建循环对象

loop.run_until_complete(f)#通过循环对象执行协程对象

#python3.7可以直接

asyncio.run(f)

3.3await关键字

await+可等待的对象{协程对象,Future对象,Task对象}(类似于IO等待)

importasyncio

asyncdeffunc():

print(哈喽)

re=awaitasyncio.sleep(2)

print(re)

asyncio.run(func())

await就是等待对象的值得到结果后再继续向下执行

importasyncio

asyncdefother():

print(start)

awaitasyncio.sleep(2)

print(end)

return1

asyncdeffun():

print(执行协程函数内部代码)

#遇到IO操作时会挂起当前协程任务,等IO操作完成后再继续往下执行,当前协程挂起时,时间循环对象可以执行其他协程任务

re=awaitother()

print(IO请求结束,结果为:,re)

asyncio.run(func())

执行结果

执行协程函数内部代码

start

end

IO请求结束,结果为:1

文档评论(0)

152****2426 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档