返回顶部
首页 > 资讯 > 后端开发 > Python >Python 异步如何使用等待有时间限制协程
  • 541
分享到

Python 异步如何使用等待有时间限制协程

Python 异步时间限制协程Python 异步协程等待 2023-03-22 17:03:43 541人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录正文1. 什么是 Asyncio wait_for()2. 如何使用 Asyncio wait_for()3. 带有超时的 Asyncio wait_for() 示例正文 我们

正文

我们可以使用 asyncio.wait_for() 函数等待 asyncio 任务或协程超时完成。如果在任务完成之前超时已过,任务将被取消。

1. 什么是 Asyncio wait_for()

asyncio.wait_for() 函数允许调用者等待 asyncio 任务或协程超时完成。如果没有指定超时,wait_for() 函数将等待直到任务完成。如果在任务完成之前指定了超时并超时,那么任务将被取消。

这允许调用者既可以设置他们愿意等待任务完成的时间,又可以通过在超时结束时取消任务来强制执行超时。

现在我们知道了 asyncio.wait_for() 函数是什么,让我们看看如何使用它。

2. 如何使用 Asyncio wait_for()

asyncio.wait_for() 函数接受一个等待和超时。等待对象可能是协程或任务。必须指定超时,并且可以是无超时、整数或浮点秒数。wait_for() 函数返回一个协程,该协程在明确等待或作为任务调度之前不会执行。

...
# wait for a task to complete
await asyncio.wait_for(coro, timeout=10)

如果提供协程,则在执行 wait_for() 协程时将其转换为任务。如果在任务完成之前超时已过,任务将被取消,并引发 asyncio.TimeoutError,这可能需要处理。

...
# execute a task with a timeout
try:
	# wait for a task to complete
	await asyncio.wait_for(coro, timeout=1)
except asyncio.TimeoutError:
	# ...

如果等待的任务因未处理的异常而失败,则该异常将传播回等待 wait_for() 协程的调用者,在这种情况下可能需要处理它。

...
# execute a task that may fail
try:
	# wait for a task to complete
	await asyncio.wait_for(coro, timeout=1)
except asyncio.TimeoutError:
	# ...
except Exception:
	# ...

接下来,让我们看看如何在超时时调用 wait_for()。

3. 带有超时的 Asyncio wait_for() 示例

我们可以探索如何在任务完成之前等待具有超时的协程。在此示例中,我们执行上述协程,但调用方等待 0.2 秒或 200 毫秒的固定超时。回想一下,一秒等于 1,000 毫秒。

任务协程被修改,使其休眠一秒以上,确保超时总是在任务完成之前到期。

# SuperFastpython.com
# example of waiting for a coroutine with a timeout
from random import random
import asyncio
# coroutine to execute in a new task
async def task_coro(arg):
    # generate a random value between 0 and 1
    value = 1 + random()
    # report message
    print(f'>task Got {value}')
    # block for a moment
    await asyncio.sleep(value)
    # report all done
    print('>task done')
# main coroutine
async def main():
    # create a task
    task = task_coro(1)
    # execute and wait for the task without a timeout
    try:
        await asyncio.wait_for(task, timeout=0.2)
    except asyncio.TimeoutError:
        print('Gave up waiting, task canceled')
# start the asyncio program
asyncio.run(main())

运行示例首先创建 main() 协程并将其用作 asyncio 程序的入口点。main() 协程创建任务协程。然后它调用 wait_for() 并传递任务协程并将超时设置为 0.2 秒。

main()协程被挂起,执行task_coro()。它报告一条消息并休眠片刻。main() 协程在超时结束后恢复。 wait_for()协程取消task_coro()协程,main()协程挂起。

task_coro() 再次运行并响应要终止的请求。它引发 TimeoutError 异常并终止。main() 协程恢复并处理由 task_coro() 引发的 TimeoutError。

这突出显示了我们如何调用带超时的 wait_for() 函数,并在任务未在超时内完成时取消任务。

由于使用了随机数,程序每次运行时的输出都会不同。

>task got 0.685375224799321
Gave up waiting, task canceled

以上就是Python 异步如何使用等待有时间限制协程的详细内容,更多关于Python 异步时间限制协程的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python 异步如何使用等待有时间限制协程

本文链接: https://lsjlt.com/news/200893.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python 异步如何使用等待有时间限制协程
    目录正文1. 什么是 Asyncio wait_for()2. 如何使用 Asyncio wait_for()3. 带有超时的 Asyncio wait_for() 示例正文 我们...
    99+
    2023-03-22
    Python 异步时间限制协程 Python 异步协程等待
  • Python异步怎么使用等待有时间限制协程
    本文小编为大家详细介绍“Python异步怎么使用等待有时间限制协程”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python异步怎么使用等待有时间限制协程”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。我们可以使...
    99+
    2023-07-05
  • 如何使用Python中的协程进行异步编程
    如何使用Python中的协程进行异步编程在传统的同步编程模型中,一个任务必须等待另一个任务完成后才能继续进行,这样会造成程序的执行效率降低。为了解决这个问题,异步编程模型应运而生。Python中的协程是一种支持异步编程的重要概念,它可以让我...
    99+
    2023-10-28
    Python 协程 异步编程
  • 如何用 Golang 在不同时区的协程中同步时间?
    在 go 协程中同步不同时区的方法:使用 time.loadlocation() 函数从时区数据库中加载时区信息,返回代表该时区的 *time.location 实例。在协程中使用上下文...
    99+
    2024-05-22
    协程 时区 golang 标准库
  • 如何使用Python绘制时间序列图
    这篇文章跟大家分析一下“如何使用Python绘制时间序列图”。内容详细易懂,对“如何使用Python绘制时间序列图”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“如何使用Pytho...
    99+
    2023-06-26
  • 如何使用Go编写实时异步程序?
    Go是一门高效、并发、简单易学的编程语言,它的并发模型和轻量级线程(goroutine)的实现使其成为编写实时异步程序的绝佳选择。在本文中,我们将介绍如何使用Go编写实时异步程序,并演示一些代码示例。 1. 什么是实时异步程序? 实时异步程...
    99+
    2023-06-25
    实时 异步编程 npm
  • Python如何使用http时间同步设置系统时间源码
    这篇文章给大家介绍Python如何使用http时间同步设置系统时间源码,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python方式实现使用http时间同步设置系统时间源码,系统环境是ubuntu 12.04、Pyth...
    99+
    2023-06-02
  • 如何在 Python 中使用异步编程关键字?
    在 Python 中,异步编程是一种非常流行的编程方式。它可以提高程序的性能和响应速度,特别是在处理大量 I/O 操作时。Python 3.5 引入了 async 和 await 关键字,使得异步编程变得更加容易。 在本文中,我们将介绍如何...
    99+
    2023-10-02
    异步编程 关键字 教程
  • 如何在Python异步编程中使用Laravel和JavaScript?
    Python异步编程在近年来越来越受到开发者的重视,因为它可以提高程序的性能和吞吐量,同时也能够更好地应对高并发的场景。而在异步编程中,Laravel和JavaScript也是非常常用的技术。本文将介绍如何在Python异步编程中使用Lar...
    99+
    2023-09-08
    异步编程 laravel javascript
  • Python 中如何使用同步和异步编程来管理 Git?
    Git 是一款非常流行的版本控制工具,它可以让开发者更好地管理代码,协作开发和版本迭代。在 Python 中,我们可以使用 GitPython 库来实现 Git 的管理。在实际使用 GitPython 进行 Git 管理时,我们可以选择使...
    99+
    2023-11-07
    同步 git 异步编程
  • 如何在Linux中使用IDE进行Python异步编程?
    在Linux中使用IDE进行Python异步编程可以大大提高代码编写效率和程序运行速度。本文将介绍如何使用PyCharm IDE进行Python异步编程。 一、什么是异步编程? 异步编程是一种编程模式,它能够提高程序的运行效率。在异步编程中...
    99+
    2023-09-02
    异步编程 linux ide
  • Laravel和JavaScript如何与Python异步编程一起使用?
    在现代Web应用程序中,异步编程是一个非常重要的话题。随着用户对Web应用程序的期望越来越高,我们需要确保我们的应用程序能够快速地响应和处理大量的数据。异步编程是实现这一目标的关键。 异步编程是指在执行任务时,可以在等待任务完成时执行其他...
    99+
    2023-09-08
    异步编程 laravel javascript
  • 如何使用Python对象实现异步编程算法?
    随着计算机硬件的不断升级和技术的不断发展,我们已经可以编写出更加高效的程序,以便更好地利用计算机资源。在编写程序时,异步编程是一种非常有用的技术。在本文中,我们将介绍如何使用Python对象来实现异步编程算法。 Python是一种高级编程...
    99+
    2023-07-08
    对象 异步编程 编程算法
  • Python 教程中如何使用异步编程处理大数据?
    Python是一种高级编程语言,它在处理大数据方面具有很强的优势。但是,当我们处理大量数据时,往往会遇到性能瓶颈。为了解决这个问题,Python提供了异步编程的方式。本文将介绍Python教程中如何使用异步编程处理大数据。 一、什么是异步编...
    99+
    2023-09-29
    教程 大数据 异步编程
  • 如何在 Windows 上使用 Python 索引实现异步编程?
    在今天的软件开发领域中,异步编程已成为一种非常重要的编程模型。Python作为一门流行的编程语言,也提供了异步编程的支持。在Windows平台上,Python提供了索引实现异步编程的方法,使得异步编程变得更加简单和高效。 本文将介绍如何在W...
    99+
    2023-06-21
    索引 windows 异步编程
  • 如何使用Python编程实现高效的异步算法?
    Python 是一门广泛应用的编程语言,它具有易学易用、灵活高效的特点,因此在各行业领域广受欢迎。Python 语言除了能够进行常规的同步编程,还能支持异步编程模型。异步编程模型能够通过充分利用 CPU 和 IO 资源,提高程序的效率,实现...
    99+
    2023-06-18
    编程算法 框架 异步编程
  • Python中如何使用异步编程来生成二维码?
    Python是一门非常流行的编程语言,它拥有强大的异步编程能力。在本文中,我们将会介绍如何使用Python中的异步编程来生成二维码。 首先,我们需要先安装一个Python库,它叫做“qrcode”。通过这个库,我们可以很容易地生成二维码。如...
    99+
    2023-08-15
    数据类型 异步编程 二维码
  • 如何使用Python中的协程和异步IO实现一个高性能的网络服务器
    如何使用Python中的协程和异步IO实现一个高性能的网络服务器引言:随着互联网的发展,网络服务器的性能要求也越来越高。传统的同步IO方式往往无法满足高并发的需求,导致服务器响应速度较慢。而采用协程和异步IO的方式可以极大地提升服务器的并发...
    99+
    2023-10-27
    协程 高性能 异步IO
  • 如何使用Java和Git实现高效的实时异步编程?
    随着互联网的快速发展,实时异步编程已经成为了现代编程领域中不可或缺的一部分。Java作为一种高度可扩展的编程语言,为开发人员提供了一个强大的工具箱,而Git则是一个流行的版本控制系统,可以帮助团队协作,使代码管理更加简单。在本篇文章中,我们...
    99+
    2023-09-25
    git 实时 异步编程
  • 如何在Go语言中使用npm进行实时异步编程?
    在Go语言中使用npm进行实时异步编程,可以让我们更加便捷地进行开发。npm是Node.js的包管理器,可以方便地安装和管理JavaScript包,也可以用于Go语言中的实时异步编程。本文将带你一步步了解如何在Go语言中使用npm进行实时异...
    99+
    2023-06-25
    实时 异步编程 npm
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作