You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何同时循环处理表格中的URL及对应等待时长任务?

实现方案(基于Python asyncio)

要实现并行处理所有URL的「首次解析→对应时长等待→再次解析」流程,而非逐个串行处理,用Python的asyncio异步框架可以轻松实现,以下是具体代码和说明:

核心思路

每个URL对应一个独立的异步任务,所有任务同时启动:

  • 每个任务先完成首次URL请求(解析)
  • 任务自身等待指定时长(不阻塞其他任务)
  • 完成等待后执行第二次URL请求(解析)

代码示例

import asyncio
import aiohttp  # 用于异步HTTP请求,需先安装:pip install aiohttp

# 定义你的URL和等待时长数据
url_wait_list = [
    {"url": "url1", "wait_time": 2},
    {"url": "url2", "wait_time": 4},
    {"url": "url3", "wait_time": 5},
]

async def process_url_task(session, url, wait_time):
    # 首次解析URL(这里用GET请求模拟解析操作)
    print(f"首次解析 {url}")
    async with session.get(url) as resp:
        # 这里可以添加解析逻辑,比如获取响应内容
        content = await resp.text()
    
    # 等待指定时长(单位:秒)
    print(f"{url} 等待 {wait_time} 秒")
    await asyncio.sleep(wait_time)
    
    # 再次解析URL
    print(f"再次解析 {url}")
    async with session.get(url) as resp:
        content = await resp.text()

async def main():
    # 创建异步HTTP会话
    async with aiohttp.ClientSession() as session:
        # 创建所有任务
        tasks = [
            process_url_task(session, item["url"], item["wait_time"])
            for item in url_wait_list
        ]
        # 并行运行所有任务
        await asyncio.gather(*tasks)

if __name__ == "__main__":
    asyncio.run(main())

关键说明

  • 并行执行:asyncio.gather(*tasks)会同时启动所有任务,各个URL的「请求-等待-请求」流程互不阻塞
  • 等待逻辑:await asyncio.sleep(wait_time)是任务自身等待,不影响其他任务的执行,比如url1等待2秒的同时,url2和url3也在各自的流程中推进
  • 解析操作:示例中用aiohttp的异步请求模拟URL解析,你可以根据实际需求替换成对应的解析逻辑(比如解析HTML、接口数据等)

内容的提问来源于stack exchange,提问作者Ashraf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:25:23