看起来Python的asyncio库是一种全新的解决方案。特别地,它似乎强制整个调用栈都具有异步处理能力。
下面是一个例子:
假设由函数 a() 实现了某个算法。
该算法调用了函数 b()。
def a(b):
for i in ...:
# do smth...
res = b()
# do smth more ...
现在假设函数b()在不同的环境下可能有不同的实现,而且可能希望在异步事件循环中调用a()(使用loop.call_soon()),其中b()调用了一些支持asyncio的代码:
def b():
await .... # this forces b() to be declared async.
现有事件循环似乎被明确禁止使用...那么,有没有方法可以实现这个功能,而不需要将整个堆栈 (a() 和 b()) 明确定义为异步协程?
async
堆栈都是这样的。 - Robert Harveyrun_in_executor
? - Jab