python中协程Future

参考:https://www.cnblogs.com/ssyfj/p/9219360.html

Future

asyn.py

# coding=utf-8


import functools
import asyncio
import threading
import time


def getInfo(name):
    print("getInfo: name {}".format(name))


def over(fu, name):
    fu.set_result("over: finish {}".format(name))
    print("over: name = {},  {}".format(name, fu))


async def regCall(allDone, loop):
    allDone.add_done_callback(functools.partial(over, name="iam1"))
    loop.call_soon(over, "call_soon")
    allDone.add_done_callback(functools.partial(over, name="iam2"))


async def deal(loop, allDone):
    print("deal: begin")
    # allDone.add_done_callback(functools.partial(over, name="i1"))

    # def call():
    #     print("call   ----")
    #     loop.call_soon(over, allDone, "i2")

    # t = threading.Timer(5, call)
    # t.start()
    start = time.time()
    star2 = loop.time()
    print("start = {},   {}".format(start, star2))
    loop.call_later(3, over, allDone, "i4")
    print("deal: middle")
    result = await allDone
    print("end {}".format(time.time()-start))
    print("deal: end: {}".format(result))


if __name__ == "__main__":
    loop = asyncio.get_event_loop()

    try:
        allDone = asyncio.Future()
        loop.run_until_complete(deal(loop, allDone))
    finally:
        loop.close()

结果:

deal: begin
start = 1603954495.515313,   101009.515
deal: middle
over: name = i4,  <Future finished result='over: finish i4'>
end 3.017853021621704
deal: end: over: finish i4
PS E:\study\py\async>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值