首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python3.6中使用async/await调用Future obj

如何在python3.6中使用async/await调用Future obj
EN

Stack Overflow用户
提问于 2017-06-14 01:56:52
回答 0查看 377关注 0票数 1

我对Python的await有疑问,我举了一个例子,它试图使用await从未来的obj中获取结果。

代码语言:javascript
复制
import time
import asyncio
import time
import random
import threading

db = {
    "yzh": "pig",
    "zhh": "big pig"
}
loop = asyncio.get_event_loop()

def _get_redis(username, clb):
    def foo():    
        data = db[username]    
        time.sleep(0.1)
        print("start clb")
        clb(data)
    t1 = threading.Thread(target=foo)
    t1.start()


def get_redis(username):
    print("start get redis")
    myfuture = asyncio.Future()
    def clb(result):
        print("clb call")
        myfuture.set_result(result)

    _get_redis(username, clb)
    return myfuture

async def main():
    print("start main")
    data = await get_redis("yzh")
    print("data is {}".format(data))

loop.run_until_complete(asyncio.ensure_future(main()))
loop.close()

我得到了没有未来结果的输出:

代码语言:javascript
复制
start main
start get redis
start clb
clb call

我应该如何使用await来获得未来的结果呢?我尝试了很多次。谢谢你的帮助。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44528433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档