• Python3.7之后使用协程进行并发编程更加容易


    [本文出自天外归云的博客园]

    在python3.7之后,async和await关键字的使用变得更加容易。

    async和await总是成对出现,async定义协程任务,await等待协程任务完成。

    代码如下:

    import asyncio
    import time
    
    
    # 定义单个协程任务
    async def my_task(any_str, use_duration):
        # 这里不能使用 time.sleep 因为 time.sleep 方法是同步的
        # 如果用 time.sleep 则多个任务的 sleep 耗时会叠加在一起
        # 用 asyncio.sleep 方法则可以模拟异步方法的耗时
        await asyncio.sleep(use_duration)
        return f"{any_str} 哦了"
    
    
    # 组装多个协程任务合并为一个协程任务
    async def run_task():
        # 计算开始时间
        start_time = time.perf_counter()
    
        # 创建异步协程任务
        task1 = my_task("task 1", 6)
        task2 = my_task("task 2", 3)
    
        # 等待异步协程任务执行完成
        # 数组 r 中包含了 task1 和 task2 的函数 return 值
        r = await asyncio.gather(task1, task2)
    
        # 计算结束时间
        end_time = time.perf_counter()
    
        # 计算异步协程任务的执行耗时
        # 约等于且稍稍大于最耗时的协程任务执行耗时
        print(f"耗时: {end_time-start_time}秒 返回: {r}")
    
    
    # 执行协程任务
    asyncio.run(run_task())

    程序输出: 

    耗时: 6.00373545428738秒 返回: ['task 1 哦了', 'task 2 哦了']

  • 相关阅读:
    JDK自动安装脚本
    lamp script
    spring MVC multipart处理文件上传
    在Java中定义常量
    常用服务搭建(nfs/ftp/samba)
    源码编译安装mysql5.6
    Spring MVC
    Linux crontab 命令格式与详细例子
    Linux : IPTABLES
    linux monitor and maintanence
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/16784583.html
Copyright © 2020-2023  润新知