【发布时间】:2021-04-08 21:50:17
【问题描述】:
我已经使用 Python 多年了,最近我发现了异步编程。 但是,我在尝试实施我的想法时遇到了困难......
假设我有一个常规(同步)函数g(),它返回一个它计算的值。在这个函数内部,我想调用另一个函数,即异步并循环运行——我们将调用这个函数f()。函数f() 在g() 内部被调用,但g() 的返回值是在f() 甚至被调用之前计算的。但是,很明显,我希望 g() 返回它计算的值并继续“在后台”运行 f()。
import asyncio
def g(a, b):
y = a + b
asyncio.run(f()) # This is blocking!
return y
async def f():
for _ in range(3):
await asyncio.sleep(1)
print("I'm still alive!")
print(g(3, 5))
# code async code continues here...
# Output:
# I'm still alive!
# I'm still alive!
# I'm still alive!
# 8
# Expected\Wanted:
# 8
# I'm still alive!
# I'm still alive!
# I'm still alive!
这样的事情可能吗?还是我错过了什么? 提前致谢!
【问题讨论】:
标签: python python-3.x asynchronous async-await python-asyncio