python 协程
  cB14ff7Kmzpi 2023年12月12日 16 0

python :用@asyncio.coroutine装饰器生成的对象是一个生成器对象 但不是协程对象

               用async 定义的函数对象不是一个生成器,但是一个协程对象

 

import asyncio
from collections.abc import Coroutine,Generator
@asyncio.coroutine
def fun():
    print('sssss')

async def fun1():
    #yield  10
    print('end')
if __name__=='__main__':
    fun=fun()
    fun1=fun1()
    print(type(fun))
    print(isinstance(fun, Generator))
    print(isinstance(fun,Coroutine))

    print(type(fun1))
    print(isinstance(fun1, Generator))
    print(isinstance(fun1,Coroutine))

##
<class 'generator'>
True
False
<class 'coroutine'>
False
True
import asyncio

async def fun(tm):
    await asyncio.sleep(tm)
    print('hello>>>>>>>>%s'%tm)
    return 'sleep %s second'%tm

def callback(future):
    print('result-----%s'%(future.result()))
    
if __name__=='__main__':
    fun=fun(2)
    loop=asyncio.get_event_loop()
    task=asyncio.ensure_future(fun)#loop.create_task(fun)
    task.add_done_callback(callback) ##此定义一个回调 接收协程执行结果 与最后一行功能一亲
    loop.run_until_complete(task)
    #print(task.result())
import asyncio

async def fun(tm):
    print('wait>>>>>>>>%s'%tm)
    await asyncio.sleep(tm)
    return 'sleep %s second'%tm

def callback(future):
    print('result-----%s'%(future.result()))

if __name__=='__main__':
    # fun=fun(2)
    # loop=asyncio.get_event_loop()
    # task=asyncio.ensure_future(fun)#loop.create_task(fun)
    # task.add_done_callback(callback) ##此定义一个回调 接收协程执行结果 与最后一行功能一亲
    # loop.run_until_complete(task)
    #print(task.result())
    loop = asyncio.get_event_loop()
    dolist=[asyncio.ensure_future(fun(i)) for i in range(2,6)]
    loop.run_until_complete(asyncio.wait(dolist))
    for tk in dolist:
        print(tk.result())

  

  

  



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月12日 0

暂无评论

推荐阅读
  KmYlqcgEuC3l   9天前   19   0   0 Python
cB14ff7Kmzpi