asyncio create_task 永远运行

2024-02-06

我有以下代码

import asyncio

loop = asyncio.get_event_loop()

async def while_loop():
    n = 0
    while True:
        print(f"{n}")
        await asyncio.sleep(2)
        n = n+1

async def some_func():
    await asyncio.sleep(5)
    print("Some Func")

future = loop.create_task(while_loop())
loop.run_until_complete(some_func())

我预计while_loop函数永远运行,但它似乎只是作为调用的结果执行run_until_complete并且它停止打印 while 循环一次some_func执行完毕。我看到的输出是:

0
1
2
Some Func

我预计这些数字即使在之后也会继续打印some_func完成了。

0
1
2
Some Func
3
4
5
6
.
.
.

打印更多号码的唯一方法是致电some_func again.


我预计这些数字即使在之后也会继续打印some_func完成了。

论点为run_until_complete控制事件循环运行的时间。一旦事件循环停止运行,all协程实际上被挂起,而不仅仅是您一直在等待的那个。但你确实有不同的选择:

  • loop.run_until_complete(some_func())- 您已经使用过的;运行事件循环直到some_func协程结束。在此期间也并行执行其他协程,但也会在事件循环完成后立即停止执行它们。

  • loop.run_forever() https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.AbstractEventLoop.run_forever- 运行事件循环,直到调用某些协程或回调loop.stop()。如果它们都不这样做,那么即使所有协程都结束,事件循环也不会停止。在你的情况下你会打电话loop.create_task(while_loop())其次是loop.create_task(some_func())进而loop.run_forever().

  • loop.run_until_complete(asyncio.gather(while_loop(), some_func()))运行事件循环直到both指定的协程完成。这个(等all任务)显然是你所期望的loop.run_until_complete()即使您只命名一个,也会自动执行,但它不会像那样工作,一旦指定的协程完成,它就会停止。asyncio.gather https://docs.python.org/3/library/asyncio-task.html#asyncio.gather可用于同时等待多个协程。有关等待的更精细控制,另请参阅asyncio.wait https://docs.python.org/3/library/asyncio-task.html#asyncio.wait.

由于您的协程之一会永远运行,因此最后两个选项将是等效的,并将产生预期的输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

asyncio create_task 永远运行 的相关文章

  • 使用 psycopg2 在 python 中执行查询时出现“编程错误:语法错误位于或附近”

    我正在运行 Python v 2 7 和 psycopg2 v 2 5 我有一个 postgresql 数据库函数 它将 SQL 查询作为文本字段返回 我使用以下代码来调用该函数并从文本字段中提取查询 cur2 execute SELECT
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 自定义 Spinner TextView 被切断

    因此 在随附的屏幕截图和代码示例中 您可以看到我的自定义微调器 正如你所看到的 无论我尝试做什么 我的文字都会被切断 九个补丁图像设置正确 其上也有文本填充 我几乎拥有一切权利 却完全不知所措 定制旋转器
  • 我可以训练它来检测我的脸吗?或任何其他人面临

    我想创建一个应用程序 在其中捕获我家人的图像并检测它是谁 我可以使用 Vision API 创建云数据库来存储每个家庭成员的不同照片并标记他们的名字 这样当我从 API 提取请求时 它会扫描数据库中的图像并检测它是哪个家庭成员 而不仅仅是检
  • 诺基亚 220 s30+ 开发

    我只是想问我如何为具有 s30 平台的诺基亚 220 开发应用程序 有没有办法为此开发应用程序 看来答案是否定的 尽管名字如此 S30 https en wikipedia org wiki Series 30 2B不相关S30 https
  • PHP 是同步还是异步?

    考虑 这里 getYears 在另一个文件中 它正在获取一个查询 我在用着 list years在文件中view php 这里是同步还是异步 这段代码是程序化的 所以getYears 总是在之前执行require once view php
  • 使用 New-PSDrive 映射网络驱动器时出现问题

    我正在运行一个基于 powershell 的多线程应用程序 其中每个线程 net 任务 需要使用不同的凭据将一堆文件从一台计算机复制到另一台计算机 这是在每个 net 任务中运行的脚本 New PSDrive Name tid PSProv
  • 有没有办法获得 deque 的内部存储大小作为 vector::capacity ?

    据我了解 deque和vector都保留了一些增长空间 vector capacity 能够获取向量的内部保留空间 双端队列标准中没有这样的成员 有什么方法可以获取这些信息吗 您必须深入研究实现才能弄清楚这一点 的版本std dequegc
  • 使用 javascript 代替 Iframe 源?

    我知道我无法从浏览器中隐藏 iframe 源 检查元素 但我想通过使用 javascript 作为源 url 使 它们 难以窃取 url iframe 如果我有 我可以改变吗 www youtube com embed xxxxxxx用Ja
  • 以编程方式更改中心 X / Y 对齐约束的乘数

    如何以最简单的方式以编程方式更改乘数 对于斯威夫特 2 0 因此 对于 Y 如果将图像的顶部设置为等于 superView 的顶部 常量为 0 然后输入此代码 IBOutlet weak var topc NSLayoutConstrain
  • BPEL 中的 Restful Web 服务调用

    我的问题是 有没有什么方法可以让我在 BPEL 中使用 Google Map 或 Youtube 等静态 Web 服务 我知道 BPEL 可与具有 WSDL 文件的 SOAP Web 服务配合使用 但是 我要求做一个项目 其中应包含与 BP
  • Django 存储网站内容

    我对网络开发有点陌生 并且无法理解网站内容的存储方式 即使在查看了开源项目之后 我仍然感到困惑 假设我有一个包含多个段落的网页 我希望最终能够通过 Django 管理页面进行编辑 现在 我已经为页面设置了视图 但我不确定模型应该如何构建 到
  • 如何使用 CloudKit.js 查询 nil 值?

    使用 CloudKit js 如何构建匹配字段为零的项目的查询 我尝试过的每个排列都会失败 要么它明显匹配字符串值 即 null 或 nil 要么如果我实际上尝试传递 null 它会抛出错误 有任何想法吗 以下均无效 filterBy fi
  • 异步加载 iframe

    我有一个网页指向另一个网站 我不希望这阻止页面其余部分的加载 有没有办法异步加载它 使用 jQuery 可以实现以下效果 where url是一些网址
  • Windows 10 - 自定义协议在通过其他方法工作时从 JavaScript 调用时失败

    我成功地在注册表中定义了一个自定义协议 名为FDMyAlbsIF 该协议旨在调用批处理文件 根据接收到的参数执行不同的操作 我现在面临两个问题 通过 Windows 资源管理器调用协议时 即在路径字段中输入字符串FDMyAlbsIF AAA
  • 如何提高从 2 个表中进行选择的 SQL 查询的性能

    请帮我 如何加快这个sql查询 SELECT pa FROM ParametrickeVyhladavanie pa SELECT p FROM produkty p WHERE p KATEGORIA IN categoryArray p
  • ASP.NET Core 2.1根据DB中的数据在布局中插入CSS

    我有一个正在努力解决的问题 一些背景 用户可以在我的应用程序中选择应用程序使用哪种配色方案 此选择存储在数据库中 我想做的是基于这个选择 在页面加载时 为用户所做的选择提供 CSS 文件 我一直在尝试做的是通过在 Layout cshtml
  • spring cloud aws多个sqs监听器

    我的项目中有2个sqs监听器 我希望其中之一具有相同的设置 而其中之一具有不同的设置 我想要更改的唯一值是 maxNumberOfMessages 最实用的方法是什么 我想为其中一个侦听器设置不同的 maxNumberOfMessages
  • ViewPager 内的 ListFragments

    我正在写我的第一个基于片段的应用程序并遇到了一些我无法使用 API 或 Stackoverflow 解决的严重问题 我正在使用一个浏览器在两个列表之间滑动 每个列表都有一个header按钮创建一个新的列表元素 类似于本机 Android 闹
  • 如何在页面加载时显示ajax加载gif动画?

    我尝试在我的网站中实现 AJAX 当单击 divchangepass 的内容时 它应该加载changepass template php 这是我为此使用的代码 function changepass click function block
  • 单元测试核心数据 - 异常退出,代码为 134

    我正在为我的核心数据应用程序设置单元测试 我在一个非常简单的测试中遇到了一个奇怪的问题 我收到的错误是 Developer Tools RunPlatformUnitTests include 451 0 Test rig Develope
  • asyncio create_task 永远运行

    我有以下代码 import asyncio loop asyncio get event loop async def while loop n 0 while True print f n await asyncio sleep 2 n