`asyncio.run()` 不等待协程完成

2023-12-03

我在 Python 3.7.3 中运行此代码

import asyncio

async def fun(time):
    print(f"will wait for {time}")
    await asyncio.sleep(time)
    print(f"done waiting for {time}")

async def async_cenas():
    t1 = asyncio.create_task(fun(1))
    print("after 1")
    t2 = asyncio.create_task(fun(2))
    print("after 2")

def main():
    t1 = asyncio.run(async_cenas())
    print("ok main")
    print(t1)

if __name__ == '__main__':
    main()
    print("finished __name__")

并得到这个输出:

after 1
after 2
will wait for 1
will wait for 2
ok main
None
finished __name__

我还期待看到:

done waiting for 1
done waiting for 2

即,为什么期待asyncio.run(X)将等待协程完成后再继续。


如果您想等待由create_task,那么你需要明确地做到这一点,例如,await依次为他们或异步设施,如gather or wait(差异已描述here)。否则,将被取消asyncio.run当退出主协程时,它被传递给asyncio.run.

Example:

import asyncio

async def fun(time):
    print(f"will wait for {time}")
    await asyncio.sleep(time)
    print(f"done waiting for {time}")

async def async_cenas():
    t1 = asyncio.create_task(fun(1))
    print("after 1")
    t2 = asyncio.create_task(fun(2))
    print("after 2")
    await asyncio.wait({t1, t2}, return_when=asyncio.ALL_COMPLETED)
    # or just
    # await t1
    # await t2

def main():
    t1 = asyncio.run(async_cenas())
    print("ok main")
    print(t1)

if __name__ == '__main__':
    main()
    print("finished __name__")
after 1
after 2
will wait for 1
will wait for 2
done waiting for 1
done waiting for 2
ok main
None
finished __name__

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

`asyncio.run()` 不等待协程完成 的相关文章

  • Pandas groupby 和描述标志 AttributeError

    我有一堆数据存储在vals 指数是单调的 但不连续 我试图对数据的直方图进行一些分析 因此我创建了以下结构 hist pd DataFrame vals hist bins pd cut vals 100 这是从实验仪器中获取的数据 我知道
  • del 在 Python 中什么时候有用?

    我实在想不出为什么 Python 需要del关键字 大多数语言似乎没有类似的关键字 例如 我们可以分配一个变量 而不是删除一个变量None到它 当从字典中删除时 del可以添加方法 有理由保留吗del在Python中 还是Python前垃圾
  • 为什么Python中的打印需要三个撇号?

    我正在用 Python 3 3 2 制作这个毕达哥拉斯定理计算器 我打印了几行 以便我可以制作图表 print Welcome to the Pythagoras Theorem Calculator powered by Python p
  • Django 自引用关系?

    我正在尝试创建模型页面 页面也应该能够有 子页面 我的模型代码如下使Python崩溃 http pastie org private butthk1aaeb3pmh7mmag1g在我的Mac python 2 6 1 和Ubuntu 10
  • 使用 JSON 将数据从 Python 导出到 Tableau?

    如何以表格形式从 Python 获取 400 万行和 28 列 我假设 基于搜索 我应该使用 JSON 格式 这种格式可以处理大量数据并且足够快 我制作了 12 行数据的子集并尝试使其正常工作 好消息是 它正在发挥作用 坏消息 不是我想要的
  • 当鼠标悬停时使用 matplotlib 注释绘图的线条[重复]

    这个问题在这里已经有答案了 我想在鼠标悬停时在绘图上注释不同的线 这里用点进行相同的操作当鼠标悬停在 matplotlib 中的某个点上时可以显示标签吗 https stackoverflow com questions 7908636 p
  • 将鼠标悬停在 Folium 的弹出窗口中

    用这样一个简单的例子 import folium map 1 folium Map location 45 372 121 6972 zoom start 12 tiles Stamen Terrain folium Marker 45 3
  • url 查询中的字符 %7D 意味着什么?

    如果我使用 url 访问我的 web 应用程序 vi 5907399890173952 html 然后它就可以工作了 但是当我查看日志文件时 googlebot 会尝试访问一个类似的网址 该网址会生成异常 vi 59073998901739
  • 如何在 Pandas 中用多个唯一字符串替换重复值?

    import pandas as pd import numpy as np data Name Tom Tom Jack Terry Age 20 21 19 18 df pd DataFrame data 假设我有一个如下所示的数据框
  • Python + Selenium:驱动程序路径

    是否有可能在不输入路径的情况下运行 Python Selenium 脚本exePython 行中每个脚本中的文件 driver webdriver Chrome 同样的问题也适用于 IE 驱动程序 Edge 驱动程序 和 Gecko 驱动程
  • 如何在Tensorflow中读取json文件?

    我正在尝试编写一个函数 用于读取张量流中的 json 文件 json 文件具有以下结构 bounding box y 98 5 x 94 0 height 197 width 188 rotation yaw 27 970195770263
  • AMLS 实验运行停留在“正在运行”状态

    我运行了 Azure 机器学习服务实验 并使用 Jupyter Notebook 记录了神经网络损失 日志记录工作正常 神经网络训练也按预期完成 但实验一直停留在运行状态 关闭计算资源不会关闭实验运行 我无法从实验面板取消它 此外 运行没有
  • 如何使用 BeautifulSoup 排除表中的某些行?

    我已经从表格中获得了所需的数据 但不想要各个玩家统计数据之间的缩写 Rk Pos Name 等 如何在保留所需数据的同时排除这些数据 包含缩写的行被归类为 thead 但我不知道如何使用该信息来跳过它 我知道玩家的数据都被压缩在一起 但现在
  • python 使用曲面图和第四个变量的滑块可视化 4d 数据

    如何使用前 3 个变量和第四个变量的 3 维曲面图作为滑块来可视化 4 维数据 从 csv 文件加载 集 我写了一个非常小的示例 重点介绍了实现此目标的方法 import numpy as np import matplotlib pypl
  • 重置Keras模型的所有权重

    我希望能够重置整个 Keras 模型的权重 这样我就不必再次编译它 编译模型目前是我的代码的主要瓶颈 这是我的意思的一个例子 import tensorflow as tf model tf keras Sequential tf kera
  • 由 asyncio.new_event_loop 创建的事件循环挂起

    以下代码只是挂起而不打印任何内容 import asyncio async def foo loop print foo loop stop loop asyncio new event loop asyncio ensure future
  • PySpark:根据与另一列中的字符串匹配的字典值创建新列

    我有一个数据框 A 如下所示 ID SOME CODE TITLE 1 024df3 Large garden in New York New York 2 0ffw34 Small house in dark Detroit Michig
  • 是否可以通过 Python 使用 Cocoa API?

    我想知道是否可以将 Cocoa Apple 的 API 与 Python 一起使用 以便能够运行像这样的任何代码link https developer apple com documentation appkit nsworkspace
  • pandas 数据帧和聚合中的行明智排序

    我在 pandas dataframe df 中有一个表 col1 col2 count 12 15 3 13 17 5 1 36 4 15 12 7 36 1 4 等等 我想要的是将 12 和 15 和 15 和 12 等计算值视为相同
  • MySQL:进行基本搜索

    我的数据库中有一个名称表 我希望对其进行模糊搜索 例如我的数据库包含 Name ID John Smith 1 Edward Smith 2 Gabriel Gray 3 Paul Roberts 4 目前 当我通过 python 搜索数据

随机推荐

  • R - 将数据帧转换为格式为 featureName:featureValue [重复] 的数据集

    这个问题在这里已经有答案了 原来我想要的格式叫 SVM 轻 并在这里描述http svmlight joachims org 我有一个数据框 我想将其转换为格式如下的文本文件 output featureIndex featureValue
  • 无法在子进程命令中使用 grep

    我的子进程命令有问题 我喜欢 grep 出与 Online 行匹配的行 def run command command p subprocess Popen command shell False stdout subprocess PIP
  • 如何处理 tokio::spawn 闭包需要“static”和“&self”?

    我无法理解如何编写封装在一个结构中的并发异步代码 我不确定如何准确解释这个问题 所以我会尝试用一个例子来解释 假设我有一个UdpServer结构 该结构有多个与其行为相关的方法 例如 handle datagram deserialize
  • 我们是否忽略补码的溢出

    我试图解决二进制补码内的溢出问题 例如说我试图去掉这两个二进制数 1111 1000 0100 010 111 001 000 我将第二个二进制数转换为两个补码等值 然后简单地将其相加 但我注意到它导致了 1 的溢出 我是否只是忽略溢出 或
  • 未找到 Python 模块,但该模块存在于文件夹中

    我正在尝试执行一个简单的 PY 文件 但收到以下错误 Traceback most recent call last File docker pull py line 8 in
  • Python 中可能存在混合缩进吗?

    看着this问题 我在我的机器上尝试了OP的代码 这里有一个文字版和截图 刚刚发生了什么 这应该是一个square功能 并且已正确实现 可以肯定的是 我复制粘贴了代码 然后再次尝试 好吧 我看不出这些版本之间有什么区别square 但只有后
  • 使用 clusplot 绘制以 0 为中心坐标的聚类

    我正在尝试绘制 GIS 坐标 特别是东向和北向相似的英国国家网格坐标 194630000 562220000 我可以使用 Cluster 库中的 clusplot 绘制这些图 clusplot df2 k means fit cluster
  • Javascript 函数生成具有非均匀概率的随机整数

    在javascript 或jquery 中 有一个简单的函数可以计算四个整数及其概率值 1 0 41 2 0 29 3 0 25 4 0 05 我怎样才能生成这四个数字并考虑到它们的概率 这个问题与这里发布的问题非常相似 生成具有概率的随机
  • php 5.3.1 的 phpinfo() 中未启用 mysql

    我在 Vista 上安装了 apache 2 2 14 php 5 3 1 和 mysql 5 1 43 两天以来我一直在尝试配置 php 以在 phpinfo 上启用 mysql 我修改了 php ini 使其具有 extension d
  • 惰性类属性装饰器

    我有一个 Django 模型 需要对自定义用户模型进行一些处理 我无法在类加载时使用该模型的类 因为类的加载顺序未知 所以我需要在运行时添加一些类属性 目前我将它们添加到 init or new like def new cls args
  • SQL Server 对浮点字段“like”会产生不一致的结果

    我在用LIKE返回针对浮点字段的匹配数字结果 似乎一旦小数点左侧超过 4 位 则不会返回与我的小数点右侧搜索项匹配的值 下面是一个说明这种情况的示例 CREATE TABLE number like test num FLOAT NULL
  • 使用 ord 和 chr 移动字母

    我正在尝试执行一个函数 将每个单词中的每个字母按值向右移动 这些单词将来自一个列表 我将使用 打开 功能打开它 我写了代码 我在这里面临一些困难 这是我的代码 def test value eval input Value here wit
  • 模板化友元函数查找

    下面的简单代码可以很好地编译 class A int x 3 public A x 0 1 x 1 2 x 2 3 friend int const at A const a unsigned i noexcept return a x i
  • 为什么下面的函数被调用三次

    我曾尝试调试 但没有运气 我无法理解为什么第二个 printf 调用increment 三次 但第一个按预期调用两次 include
  • 使用正则表达式和转义双引号将变量通过管道传输到 FINDSTR

    我试图理解发送给我的批处理文件 以便在第三方程序解决问题时解决该错误 基本上 他们正在运行 findstr 正则表达式命令来确定字符串是否匹配 如果是这样 则不应删除的特殊字符将在传递到原始命令行程序之前手动添加回来 据我所知 所提供的内容
  • gitcherrypick 不工作

    我正在尝试从 master 中挑选一个提交并将其放入当前的生产分支中 但是 当我执行git cherry pick
  • 在.net core中编写Windows服务

    我的问题是如何在 net core 中编写我们在以前的 net 版本中编写的 Windows 服务 许多链接 文章解释了如何将 net core 应用程序托管为 Windows 服务 那么这是我创建 Windows 服务的唯一方法吗 如果是
  • C# 异步/等待未观察到的异常

    我试图理解为什么下面的代码 async void Handle Clicked object sender System EventArgs e try await CrashAsync aaa catch Exception except
  • 类属性上的 StackOverFlow [重复]

    这个问题在这里已经有答案了 复制 刚接触 C 为什么 Property Set 会抛出 StackOverflow 异常 我有一个简单的类 myClass 它有一个名为 isAuthenticated 的属性 代码如下 public cla
  • `asyncio.run()` 不等待协程完成

    我在 Python 3 7 3 中运行此代码 import asyncio async def fun time print f will wait for time await asyncio sleep time print f don