首页 > 编程语言 >Python3.7之后使用协程进行并发编程更加容易

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

时间:2022-10-12 15:13:24浏览次数:52  
标签:task 协程 耗时 编程 Python3.7 任务 sleep time

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

在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 哦了']

标签:task,协程,耗时,编程,Python3.7,任务,sleep,time
From: https://www.cnblogs.com/LanTianYou/p/16784583.html

相关文章

  • StampedLock:一个并发编程中非常重要的票据锁
    摘要:一起来聊聊这个在高并发环境下比ReadWriteLock更快的锁——StampedLock。本文分享自华为云社区《【高并发】一文彻底理解并发编程中非常重要的票据锁——StampedLock......
  • 5.NIO-网络编程-阻塞VS非阻塞
    1.4、网络编程1.4.1阻塞VS非阻塞阻塞:ServerSocketChannel.accept()阻塞到客户端连接SocketChannel.read()阻塞到客户端发送数据//服务端@Slf4jpublicclassSo......
  • Python深度学习:逻辑、算法与编程实战
    "IT有得聊”是机械工业出版社旗下IT专业资讯和服务平台,致力于帮助读者在广义的IT领域里,掌握更专业、实用的知识与技能,快速提升职场竞争力。 今天为您推荐一本精品图书--Pyt......
  • 【Py4OH 1.1.0】新版发布及鸿蒙设备Python网络编程简介
            大家好,自从去年(没错,是去年)发布了​​Py4OH第一个正式版​​之后,我开启了佛系开发模式,没有继续更新了。有小......
  • java函数式编程
    importcom.alibaba.fastjson.JSON;importcom.ctrip.car.osd.util.LogHelper;importorg.apache.commons.collections.CollectionUtils;importjava.util.ArrayList;......
  • 2020年2月编程语言排行榜
    TIOBE公布了2月份编程语言排行榜。相比上个月编程语言Top5并没有太大的变化,其中Java依旧稳坐榜首,随后分别是C、Python、C++、C#。Java,C和Python。牢牢占据前三的位置对于......
  • 启科量子开源量子编程框架 QuTrunk
    近日,启科量子公布发布并开源了其首个量子编程框架QuTrunk,旨在让更多的开发者、专家学者能够通过它来进行量子电路等方面的模拟,让更多的人可以参与到量子技术的研发上来,更快......
  • 9 月编程语言排行榜:Python 反超 C++,万年不变的前三终于变了
    "IT有得聊”是机械工业出版社旗下IT专业资讯和服务平台,致力于帮助读者在广义的IT领域里,掌握更专业、实用的知识与技能,快速提升职场竞争力。 TIOBE发布了9 月份的编程语......
  • linux串口编程设置
    在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件的操作类似,只需打开相应的设备文件即可操作。串口编程特殊在于串口通信时相关参数与属性的设置。嵌......
  • Java中的函数式编程
    写在前面虽然JDK8已经是非常古老的版本了(截止到文章发布,目前最新JDK版本为JDK19.。。。),但JDK8中的函数式编程一直没有系统的学过。这次由于工作中的使用加上国庆假期,索性......