iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么创建和运行异步任务
  • 190
分享到

Python中怎么创建和运行异步任务

Python 2023-05-14 22:05:31 190人浏览 安东尼

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

摘要

1. 什么是异步任务异步任务是一个调度并独立运行 asyncio 协程的对象。它提供了一个调度协程的句柄,asyncio 程序可以查询并使用它来与协程交互。任务是从协程创建的。它需要一个协程对象,包装协程,安排它执行,并提供与之交互的方法。

    1. 什么是异步任务

    异步任务是一个调度并独立运行 asyncio 协程的对象。它提供了一个调度协程的句柄,asyncio 程序可以查询并使用它来与协程交互。

    任务是从协程创建的。它需要一个协程对象,包装协程,安排它执行,并提供与之交互的方法。任务独立执行。这意味着它被安排在 asyncio 事件循环中,并且无论创建它的协程中发生了什么,它都会执行。这与直接执行协程不同,后者调用者必须等待它完成。

    asyncio.Task 类扩展了 asyncio.Future 类,一个实例是可等待的。Future 是一个较低级别的类,代表最终会到达的结果。扩展 Future 类的类通常被称为 Future-like。

    因为异步任务是可等待的,这意味着协程可以使用 await 表达式等待任务完成。

    ...
    # wait for a task to be done
    await task

    现在我们知道什么是 asyncio 任务,让我们看看如何创建一个。

    2. 如何创建任务

    使用提供的协程实例创建任务。回想一下协程是使用 async def 表达式定义的,看起来像一个函数。

    # define a coroutine
    async def task_coroutine():
    	# ...

    任务只能在协程中创建和调度。创建和调度任务有两种主要方式,它们是:

    • 使用高级 api 创建任务(首选)

    • 使用低级 API 创建任务

    2.1. 高级 API

    可以使用 asyncio.create_task() 函数创建任务。asyncio.create_task() 函数接受一个协程实例和一个可选的任务名称,并返回一个 asyncio.Task 实例。

    ...
    # create a coroutine
    coro = task_coroutine()
    # create a task from a coroutine
    task = asyncio.create_task(coro)

    这可以通过在一行中使用复合语句来实现。

    ...
    # create a task from a coroutine
    task = asyncio.create_task(task_coroutine())

    这将做几件事:

    • 将协程包装在异步任务实例中。

    • 安排任务在当前事件循环中执行。

    • 返回一个任务实例

    任务实例可以被丢弃,通过方法与之交互,并由协程等待。这是从 asyncio 程序中的协程创建任务的首选方法。

    2.2. 低级 API

    也可以使用较低级别的 asyncio API 从协程创建任务。

    第一种方法是使用 asyncio.ensure_future() 函数。此函数采用任务、未来或类似未来的对象,例如协程,以及可选的用于调度它的循环。如果没有提供循环,它将被安排在当前事件循环中。

    如果为这个函数提供了协程,它会为我们包装在一个实例中,然后返回。

    ...
    # create and schedule the task
    task = asyncio.ensure_future(task_coroutine())

    我们可以用来创建和调度任务的另一个低级函数是 loop.create_task() 方法。此函数需要访问特定的事件循环,在该事件循环中将协程作为任务执行。

    我们可以通过 asyncio.get_event_loop() 函数获取 asyncio 程序中当前事件循环的实例。然后可以使用它来调用 create_task() 方法来创建一个 Task 实例并安排它执行。

    ...
    # get the current event loop
    loop = asyncio.get_event_loop()
    # create and schedule the task
    task = loop.create_task(task_coroutine())

    3. 任务何时运行?

    创建任务后的一个常见问题是它什么时候运行?

    虽然我们可以通过 create_task() 函数调度协程作为任务独立运行,但它可能不会立即运行。事实上,直到事件循环有机会运行,任务才会执行。

    直到所有其他协程都没有运行并且轮到任务运行时才会发生这种情况。

    例如,如果我们有一个 asyncio 程序,其中有一个创建和调度任务的协程,则调度的任务将不会运行,直到创建任务的调用协程被挂起。

    如果调用协程选择休眠,选择等待另一个协程或任务,或者选择等待已安排的新任务,则可能会发生这种情况。

    ...
    # create a task from a coroutine
    task = asyncio.create_task(task_coroutine())
    # await the task, allowing it to run
    await task

    现在我们知道什么是任务以及如何安排它们。

    以上就是python中怎么创建和运行异步任务的详细内容,更多请关注编程网其它相关文章!

    --结束END--

    本文标题: Python中怎么创建和运行异步任务

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

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

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Python中怎么创建和运行异步任务
      1. 什么是异步任务异步任务是一个调度并独立运行 asyncio 协程的对象。它提供了一个调度协程的句柄,asyncio 程序可以查询并使用它来与协程交互。任务是从协程创建的。它需要一个协程对象,包装协程,安排它执行,并提供与之交互的方法。...
      99+
      2023-05-14
      Python
    • Python中如何创建和运行异步任务
      本篇内容主要讲解“Python中如何创建和运行异步任务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中如何创建和运行异步任务”吧!1. 什么是异步任务异步任务是一个调度并独立运行 a...
      99+
      2023-07-06
    • Python中如何创建和运行异步任务详解
      目录正文1. 什么是异步任务2. 如何创建任务2.1. 高级 API2.2. 低级 API3. 任务何时运行?正文 您可以从 asyncio 程序中的协程创建任务对象。任务提供独立...
      99+
      2023-03-22
      Python创建运行异步任务 Python异步任务
    • Python异步之在Asyncio中怎么运行阻塞任务
      今天小编给大家分享一下Python异步之在Asyncio中怎么运行阻塞任务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。正文...
      99+
      2023-07-05
    • Python异步之怎么获取当前和正在运行任务
      正文我们可以反省在 asyncio 事件循环中运行的任务。这可以通过为当前运行的任务和所有正在运行的任务获取一个 asyncio.Task 对象来实现。1. 如何获取当前任务我们可以通过 asyncio.current_task() 函数获...
      99+
      2023-05-14
      Python
    • Android中怎么创建和运行Python应用
      Android中怎么创建和运行Python应用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在 Android 上安装 Termux首先,安装 Termux 应用程序。Te...
      99+
      2023-06-16
    • Python异步之如何获取当前和正在运行任务
      今天小编给大家分享一下Python异步之如何获取当前和正在运行任务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。正文我们可以...
      99+
      2023-07-06
    • Python 异步之在 Asyncio中如何运行阻塞任务详解
      目录正文1. 阻塞任务2. 如何运行阻塞任务3. 实例正文 阻塞任务是阻止当前线程继续进行的任务。 如果在 asyncio 程序中执行阻塞任务,它会停止整个事件循环,从而阻止任何其...
      99+
      2023-03-22
      Python 异步Asyncio阻塞运行 Python 异步
    • Python 异步之如何获取当前和正在运行任务详解
      目录正文1. 如何获取当前任务2. 如何获取所有任务正文 我们可以反省在 asyncio 事件循环中运行的任务。这可以通过为当前运行的任务和所有正在运行的任务获取一个 asynci...
      99+
      2023-03-22
      Python 异步获取当前运行任务 Python 异步
    • python异步任务怎么实现
      在Python中,可以使用协程(Coroutine)和异步IO来实现异步任务。首先,需要使用`async`关键字定义一个协程函数(C...
      99+
      2023-09-22
      python
    • springboot定时任务和异步任务怎么实现
      这篇文章主要介绍“springboot定时任务和异步任务怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot定时任务和异步任务怎么实现”文章能帮助大家解决问题。异步任务简单案例...
      99+
      2023-06-27
    • hbuilder怎么创建和运行php文件
      在HBuilder中创建和运行PHP文件的步骤如下: 创建PHP文件:在HBuilder中,可以通过在项目目录中右键点击选择“新...
      99+
      2024-03-06
      hbuilder php
    • Python异步等待任务怎么使用
      今天小编给大家分享一下Python异步等待任务怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。正文我们可以通过 asy...
      99+
      2023-07-05
    • SSIS中怎么创建同步数据库数据任务
      本篇文章给大家分享的是有关SSIS中怎么创建同步数据库数据任务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。这些包可以独立使用,也可以与其他包...
      99+
      2024-04-02
    • linux下怎样才能创建计划任务运行php文件
      这篇文章主要讲解了“linux下怎样才能创建计划任务运行php文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux下怎样才能创建计划任务运行php文件”吧!代码如下:dos2unix...
      99+
      2023-06-13
    • Oracle中怎么创建WIP任务单
      这篇文章主要介绍“Oracle中怎么创建WIP任务单”,在日常操作中,相信很多人在Oracle中怎么创建WIP任务单问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle...
      99+
      2024-04-02
    • C#异步编程Task怎么创建
      这篇文章主要介绍“C#异步编程Task怎么创建”,在日常操作中,相信很多人在C#异步编程Task怎么创建问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#异步编程Task怎么创建”的疑惑有所帮助!接下来,请跟...
      99+
      2023-06-30
    • Python中怎么实现同步和异步
      Python中怎么实现同步和异步,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、同步与异步#同步编程(同一时间只能做一件事,做完了才能做下一件事情) ...
      99+
      2023-06-17
    • Django怎么实现异步任务
      本篇内容介绍了“Django怎么实现异步任务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 对于网站来说...
      99+
      2024-04-02
    • springboot怎么实现异步任务
      这篇“springboot怎么实现异步任务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springboot怎么实现异步任务...
      99+
      2023-06-29
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作