asyncio异步 loop.run_in_executor操作同步方法变成异步操作

import time
import asyncio
from concurrent.futures import ThreadPoolExecutor


def long_blocking_function():
    print(time.time())
    time.sleep(2)
    return True


async def run():
    loop = asyncio.get_event_loop()
    # 新建线程池
    pool = ThreadPoolExecutor()
    # 任务列表
    tasks = [loop.run_in_executor(pool, long_blocking_function),
             loop.run_in_executor(pool, long_blocking_function)]
    # 等待所有任务结束并返回
    return await asyncio.gather(*tasks)



if __name__ == '__main__':
    # 获取新的事件循环
    loop = asyncio.new_event_loop()
    # 设置当前事件循环
    asyncio.set_event_loop(loop)
    now = time.time()
    loop.run_until_complete(run())
    print(time.time() - now)

  

posted @ 2021-05-27 09:22  Young_Mo  阅读(1937)  评论(0编辑  收藏  举报