aysncio执行tasks的方法

1. asyncio

复制代码
import time
import asyncio


# func called as one task
async def worker_1(time_sleep):
    print('worker_1 had been called')
    await asyncio.sleep(time_sleep)
    print('worker_1 had awaited done!')


async def main():
    print('main begin !')
    tasks = [asyncio.create_task(worker_1(t)) for t in range(2, 9)]
    # task2 = asyncio.create_task(worker_2())
    # await task1
    # await task2
    await asyncio.gather(*tasks)
    print('main done done res')


if __name__ == '__main__':
    start_time = time.perf_counter()
    asyncio.run(main())
    end_time =time.perf_counter()
    print('asyncio.run(main()): runtime: {}'.format(end_time - start_time))
复制代码

2. 显示爬虫时间最长的tasks

要等所有任务都结束才行,用for task in tasks: await task 即可

3.  await asyncio.gather(*tasks)

async def main(urls):    
tasks = [asyncio.create_task(crawl_page(url)) for url in urls]
await asyncio.gather(*tasks)

 

posted @   littlevigra  阅读(144)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2020-02-12 访问量暴增导致应用不可用的解决过程
点击右上角即可分享
微信分享提示