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)

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM