Python 将第三方库转换为asyncio

Python 将第三方库转换为asyncio,python,python-asyncio,Python,Python Asyncio,我有一个第三方库(在本例中是azurecosmos),它正在执行缓慢的阻塞操作。我想在asyncio库中使用它来利用一定程度的并行性,这样我可以在一个请求等待我们的数据时启动另一个请求 我已经在网上四处查看了一下,但是找不到一个关于如何包装外部库的具体答案;它是否像: def external_sync_method(*args, **kwargs): ... async def my_async_code(): args_list = [...] return awa

我有一个第三方库(在本例中是
azurecosmos
),它正在执行缓慢的阻塞操作。我想在asyncio库中使用它来利用一定程度的并行性,这样我可以在一个请求等待我们的数据时启动另一个请求

我已经在网上四处查看了一下,但是找不到一个关于如何包装外部库的具体答案;它是否像:

def external_sync_method(*args, **kwargs):
    ...

async def my_async_code():
    args_list = [...]
    return await asyncio.gather(*(external_sync_method(*args) for args in args_list))

在单独的线程中异步运行函数func

python>=3.9

async def my_async_code():
参数列表=[…]
return wait asyncio.gather(
*(
异步到线程(外部同步方法,*args)
对于args_列表中的args
)
)
python<3.9

异步定义运行同步方法(func、*args、**kwargs):
loop=asyncio.get\u running\u loop()
func_call=functools.partial(func,*args,**kwargs)
返回等待循环。在执行器中运行(无,函数调用)
异步定义我的异步代码():
参数列表=[…]
return wait asyncio.gather(
*(
运行同步方法(外部同步方法,*args)
对于args_列表中的args
)
)

这也适用于发电机吗?谢谢您的回复,我想我遗漏了一些简单的东西。我将在周一尝试,然后很可能将此标记为已接受的答案。