一段代码理解Python异步函数async的基本用法

这篇具有很好参考价值的文章主要介绍了一段代码理解Python异步函数async的基本用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

异步函数的使用规则

正常情况下我们的函数时串行的运行的,这里称之为主函数.

异步函数:与主函数并行运行.

async def和def,python,python,Powered by 金山文档

Python异步函数即async必须在普通函数的命名前加上async

示例:

async def case_b():
    print('start', get_time(), 'case_b')
    await asyncio.sleep(1)
    print('end', get_time(), 'case_b')

执行async函数

if __name__ == '__main__':
    asyncio.run(case_b())

async函数内等待:只阻塞当前async函数

await asyncio.sleep(2)
async def和def,python,python,Powered by 金山文档

async函数的代码示例

m_mock安装

import asyncio
import time

from x_mock.m_mock import m_mock


def get_time():
    return m_mock.mock('@time("%H:%M:%S.%f")')


async def case_a():
    print('start', get_time(), 'case_a')
    await asyncio.sleep(2)  # 只阻塞当前函数,所以比case_b 多等 1s,下面这句最后打印
    print('end', get_time(), 'case_a')


async def case_b():
    print('start', get_time(), 'case_b')
    await asyncio.sleep(1)
    print('end', get_time(), 'case_b')


async def main():
    await asyncio.gather(
        case_a(),
        case_b()
    )


if __name__ == '__main__':
    start = time.time()
    # asyncio.run(main())  # 运行方式1

    # 运行方式2
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
    print(time.time() - start)
async def和def,python,python,Powered by 金山文档
async def和def,python,python,Powered by 金山文档

通过上述代码示例可以发现case_a和case_b通过async并行运行了,但是case_a由于使用await等待2s比case_b的结果晚一秒出现.文章来源地址https://www.toymoban.com/news/detail-607020.html

打印异步函数的返回值示例

import asyncio
import time

from x_mock.m_mock import m_mock


def get_time():
    return m_mock.mock('@time("%H:%M:%S.%f")')


async def case_a():
    print('start', get_time(), 'case_a')
    await asyncio.sleep(2)  # 只阻塞当前函数,所以比case_b 多等 1s,下面这句最后打印
    print('end', get_time(), 'case_a')
    return 'case_a'


async def case_b():
    print('start', get_time(), 'case_b')
    await asyncio.sleep(1)
    print('end', get_time(), 'case_b')
    return 'case_b'


async def main():
    return await asyncio.gather(
        case_a(),
        case_b()
    )


if __name__ == '__main__':
    start = time.time()
    # asyncio.run(main())  # 运行方式1,不建议,会有一些报错

    # 运行方式2
    loop = asyncio.get_event_loop()
    print(loop.run_until_complete(main()))
    print(time.time() - start)

到了这里,关于一段代码理解Python异步函数async的基本用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解Async/Await:从原理到实践的JavaScript异步编程指南

    理解 async/await 的原理和使用方法是理解现代JavaScript异步编程的关键。这里我会提供一个详细的实例,涵盖原理、流程、使用方法以及一些注意事项。代码注释会尽量详尽,确保你理解每个步骤。 实例:使用async/await进行异步操作 详细解释和注释: 异步函数定义: async func

    2024年02月05日
    浏览(48)
  • 详解async 与 await,带您理解Playwright使用异步方法的正确姿势!

    大家在使用python做playwright自动化测试的过程中,一定会发现下面这种异步用法 很多同学可能只是按照这种写法来编写项目的自动化测试代码,对于具体细节可能并不了解,今天我就来讲一下playwright异步用法的相关技术细节。建议大家拷贝文档中的脚本实际运行一下,学习的

    2024年02月12日
    浏览(38)
  • CoroutineScope Dispatchers.IO异步操作async返回函数,Kotlin

              主流程开始 ... 1703757127994 分支myFun开始... 1703757127995 分支myFun结束 1703757128042 主流程结束 1703757128042 myFun launch... 1703757128045 myFun delay... 1703757128046 myFun delay end 1703757131050 主流程等待结果返回... main : 3 1703757131052 主流程结果返回 myFun retFun 1703757131052 Process finished with

    2024年02月02日
    浏览(33)
  • Python中super函数的详细用法,直观理解

    super相关的介绍文章看了无数遍,每次看得都云里雾里的,没过多久就忘了,只模糊知道跟MRO有关,但是稍微一复杂就不知道怎么回事了,本篇文章主要记录我对super的理解 super的作用就是执父类的方法,虽然这句话不完全对,但是也差不多是那么个意思了。 比如以单继承为

    2024年02月07日
    浏览(35)
  • Python 中的 Async IO [异步 IO]

    Async IO是一种并发编程设计,在Python中得到了专门的支持,从Python 3.4到3.7,并且可能还会继续发展。 你可能会担心地想到:“并发、并行、线程、多进程。这已经够难理解的了。异步IO又是什么?\\\" 本教程旨在帮助你回答这个问题,让你更好地理解Python中异步IO的方法。 以下

    2024年02月03日
    浏览(37)
  • 深入理解 Promise、async、回调函数和 AJAX

    简介:本篇博客将介绍 Promise、async、回调函数和 AJAX,这些是在 JavaScript 中处理异步编程和数据交换的关键技术。我们将通过代码示例和解释来详细说明它们的基本用法和优势。 下面是一个简单的示例,展示 Promise 的基本用法: 在创建 Promise 对象时,传递的参数是一个执行

    2024年02月10日
    浏览(31)
  • 【ECMAScript6_6】async 函数、Class、Module、异步遍历器、ArrayBuffer、Decorator装饰器

    1、async 函数 async 函数是什么?一句话,它就是 Generator 函数的语法糖。async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已。 async函数自带执行器,只要调用了asyncReadFile函数,它就会自动执行,输出最后结果。不像 Generator 函数,需要调用next方法

    2024年02月16日
    浏览(35)
  • Python中Pandas库提供的函数——pd.DataFrame的基本用法

    pd.DataFrame 是 Pandas 库中的一个类,用于创建和操作数据框(DataFrame)。DataFrame 是 Pandas 的核心数据结构,用于以表格形式和处理数据,类似提供电子表格或数据库表格。类了创建 pd.DataFrame 数据框、访问数据、进行数据操作和分析的方法和属性。 表格形式 :DataFrame是一个二维

    2024年02月05日
    浏览(40)
  • 一文读懂异步和同步——async/await在运行时和普通代码的执行顺序的问题

    一、执行顺序问题 JavaScript中的await语句是异步编程中用于等待Promise对象执行结果的,它通常与async函数一起使用。在使用await时,程序的执行将暂停,直到该后面的Promise对象完成执行并返回结果。 函数代码执行顺序通常情况下按照代码所在文件从上至下

    2024年02月03日
    浏览(34)
  • python中的async和await用法

    前言:此篇文章是在文心一言的辅助下完成的。 同步操作 :同步操作是指所有的操作都完成后,才返回给用户结果。当一个任务发出请求并等待响应时,如果未收到响应,该任务就会被阻塞,并一直等待直到收到响应为止。例如,在一个同步过程中,如果有一个函数需要较

    2024年04月27日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包