在常规(同步)方法中阻止“异步”方法的结果

时间:2019-03-07 10:41:49

标签: python-3.x python-asyncio

假设我的算法中有一个异步“核心”,即 meant 返回最终结果。

以及一些必须在之前和之后运行的同步部件。喜欢:

>>> b
>>> [[3,4],
    [0,0]]

1 个答案:

答案 0 :(得分:1)

异步功能可以(并且应该)由event loop运行,例如:

def run():
    x = prepare()
    r = asyncio.run(algo_async(x))
    post(r)

(如果您使用的Python <3.7,请使用asyncio.get_event_loop().run_until_complete(algo_async(x))代替asyncio.run


但是,请注意,首先使函数异步的主要原因是能够与其他异步函数同时运行。当您在同步函数中运行异步函数时,您将失去此功能以及所有相关的好处。

这就是为什么人们通常使事件循环运行整个程序的入口点,并使用make使所有需要运行异步功能的功能也异步运行。