有没有办法在异步python中等待值

时间:2020-07-01 18:27:39

标签: python python-3.x async-await python-asyncio

基本上,我正在尝试在Python中使用异步代码。首先,我想我会制作一个斐波那契计算器。 但是我在使用它时遇到了麻烦,这是我的代码

break

我得到的错误是

import asyncio as a
cache = {}

async def fib(n):

    if n < 10:
        a.sleep(0.001)
    else:
        if n in cache:
            result = cache[n]
        else:
            result = await fib(n - 2) + await fib(n - 1)
    cache[n] = result
    return result

async def main():
    res = await fib(100)
    print(res)

a.run(main())

谢谢。

1 个答案:

答案 0 :(得分:1)

您错过了初始化值。它们已预先添加到以下缓存:

import asyncio as a
cache = {0: 0, 1: 1}

async def fib(n):
    if n in cache:
        result = cache[n]
    else:
        result = await fib(n - 2) + await fib(n - 1)
    cache[n] = result
    return result

async def main():
    res = await fib(100)
    print(res)

a.run(main())