Python 3 async for 循环中的类型错误

2024-03-26

我正在学习 Python 相对较新的异步功能。我发现这个在PEP 492 https://www.python.org/dev/peps/pep-0492/#example-2:

以下是一个实用程序类,它将常规迭代转换为 异步的。虽然这不是一件非常有用的事情, 代码说明了正则和异步的关系 迭代器。

class AsyncIteratorWrapper:
    def __init__(self, obj):
        self._it = iter(obj)

    def __aiter__(self):
        return self

    async def __anext__(self):
        try:
            value = next(self._it)
        except StopIteration:
            raise StopAsyncIteration
        return value

async for letter in AsyncIteratorWrapper("abc"):
    print(letter)

我尝试通过添加给定的来运行此代码async for循环到一个函数,然后使用事件循环调用该函数。

完整示例代码(在解释器中运行):

class AsyncIteratorWrapper:
    def __init__(self, obj):
        self._it = iter(obj)
    def __aiter__(self):
        return self
    async def __anext__(self):
        try:
            value = next(self._it)
        except StopIteration:
            raise StopAsyncIteration
        return value

async def aprint(str):
  async for letter in AsyncIteratorWrapper(str):
    print(letter)

import asyncio
loop = asyncio.get_event_loop()
co = aprint("abcde")
loop.run_until_complete(co)

但是,我收到错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/rh/rh-python35/root/usr/lib64/python3.5/asyncio/base_events.py", line 337, in run_until_complete
    return future.result()
  File "/opt/rh/rh-python35/root/usr/lib64/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/opt/rh/rh-python35/root/usr/lib64/python3.5/asyncio/tasks.py", line 239, in _step
    result = coro.send(None)
  File "<stdin>", line 2, in aprint
TypeError: 'async for' received an invalid object from __aiter__: AsyncIteratorWrapper

我究竟做错了什么?如何修复这个例子?我有点惊讶 PEP 中的代码竟然失败了。

我正在使用 python 版本 3.5.1。


您使用的代码适用于 python 3.5.2+。

从Python 3.5.2开始__aiter__可以直接返回异步迭代器。更多这里 https://docs.python.org/3/whatsnew/3.5.html#pep-492-coroutines-with-async-and-await-syntax

您收到的错误是由于较旧的 python(3.5.1) 造成的,因此它返回了错误的类型。

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

Python 3 async for 循环中的类型错误 的相关文章

  • 如何在算术表达式的结果上添加 SQLAlchemy 标签?

    我如何将这样的东西翻译成 SQLAlchemy select x y as difference 我知道该怎么做 x label foo 但我不确定在哪里放置下面的 label 方法调用 select table c x table c y
  • 返回不包括指定键的字典副本

    我想创建一个函数 返回字典的副本 不包括列表中指定的键 考虑这本词典 my dict keyA 1 keyB 2 keyC 3 致电without keys my dict keyB keyC 应该返回 keyA 1 我想用一行简洁的字典理
  • 远程控制或脚本打开 Office 从 Python 编辑 Word 文档

    我想 最好在 Windows 上 在特定文档上启动 Open Office 搜索固定字符串并将其替换为我的程序选择的另一个字符串 我该如何从外部 Python 程序中做到这一点 OLE 什么 原生 Python 脚本解决方案 The doc
  • 一起使用 Argparse 和 Json

    我是 Python 初学者 我想知道 Argparse 和 JSON 是否可以一起使用 说 我有变量p q r 我可以将它们添加到 argparse 中 parser add argument p param1 help x variabl
  • 使用 Python 解析 XML,解析外部 ENTITY 引用

    在我的 S1000D xml 中 它指定了一个带有对公共 URL 的引用的 DOCTYPE 该 URL 包含对包含所有有效字符实体的许多其他文件的引用 我使用 xml etree ElementTree 和 lxml 尝试解析它并得到解析错
  • 如何在 Keras 中使用部分输入进行训练,其余部分用于损失函数

    我是 Keras 新手 正在尝试实现神经网络机器学习模型 输入张量看起来像 X1 X2 和输出 Y 注意 X1 和 X2 是相关的 在模型中 只有 X1 将用于训练 但 X1 和 X2 都将传递给损失函数 该损失函数是 X1 X2 y pr
  • 从 python 中的缩进文本文件创建树/深度嵌套字典

    基本上 我想迭代一个文件并将每行的内容放入一个深层嵌套的字典中 其结构由每行开头的空格数量定义 本质上 目标是采取这样的事情 a b c d e 并将其变成这样的东西 a b c d e Or this apple colours red
  • 如何在python中递归复制目录并覆盖全部?

    我正在尝试复制 home myUser dir1 及其所有内容 及其内容等 home myuser dir2 在Python中 此外 我希望副本覆盖中的所有内容dir2 It looks like distutils dir util co
  • Matplotlib 将颜色图 tab20 更改为三种颜色

    Matplotlib 有一些新的且非常方便的颜色图 选项卡颜色图 https matplotlib org examples color colormaps reference html 我错过的是生成像 tab20b 或 tab20c 这
  • Python time.sleep - 永不醒来

    我认为这将是那些简单的问题之一 但它让我感到困惑 停止媒体 我是对的 找到了解决方案 查看答案 我正在使用 Python 的单元测试框架来测试多线程应用程序 很好而且很直接 我有 5 个左右的工作线程监视一个公共队列 以及一个为它们制作工作
  • 在 Python 中,如何获取特定文件中定义的类列表?

    如果一个文件myfile py包含 class A object Some implementation class B object Some implementation 我如何定义一个方法 以便在给定的情况下myfile py 它返回
  • PermanentTaskFailure:“模块”对象没有属性“迁移”

    我在 google appengine 上使用 Nick Johnson 的批量更新库 http blog notdot net 2010 03 Announcing a robust datastore bulk update utili
  • Scikit Learn - K-Means - 肘部 - 标准

    今天我想学习一些关于 K means 的知识 我已经了解该算法并且知道它是如何工作的 现在我正在寻找正确的 k 我发现肘部准则作为检测正确的 k 的方法 但我不明白如何将它与 scikit learn 一起使用 在 scikit learn
  • 如何表示类的实例与将其作为输入的类之间的关系?

    我有一堂课叫House 这个类的实例是house class House def init self height length self height height self length length def housePlan hou
  • python csv按列转换为字典

    是否可以将 csv 文件中的数据读取到字典中 使得列的第一行是键 同一列的其余行构成列表的值 例如 我有一个 csv 文件 strings numbers colors string1 1 blue string2 2 red string
  • Pandas DataFrame:如何计算组中第一行和最后一行的差异?

    这是我的熊猫数据框 import pandas as pd import numpy as np data column1 338 519 871 1731 2693 2963 3379 3789 3910 4109 4307 4800 4
  • SpaCy 中的自定义句子边界检测

    我正在尝试在 spaCy 中编写一个自定义句子分段器 它将整个文档作为单个句子返回 我编写了一个自定义管道组件 它使用以下代码来执行此操作here https github com explosion spaCy issues 1850 但
  • Python“self”关键字[重复]

    这个问题在这里已经有答案了 我是 Python 新手 通常使用 C 最近几天开始使用它 在类中 是否需要在对该类的数据成员和方法的任何调用前添加前缀 因此 如果我在该类中调用方法或从该类获取值 我需要使用self method or sel
  • 使用Python重命名目录中的多个文件

    我正在尝试使用以下 Python 脚本重命名目录中的多个文件 import os path Users myName Desktop directory files os listdir path i 1 for file in files
  • 获取运行云功能的运行时服务帐户

    有没有办法以编程方式从云功能获取运行时服务帐户的电子邮件 我知道我可以 猜测 默认的 App Engine 帐户 因为它始终是 appspot gserviceaccount com 但这不是我想要的 我本来期待有一些环境变量 https

随机推荐

  • 如何合并 Google 字体导入

    我正在使用带有 Divi 主题的 WordPress 有这样的代码 function et divi fonts url fonts url Translators If there are characters in your langu
  • 为什么调用 setenv("OS_ACTIVITY_DT_MODE", "disable", 1) 不会影响日志记录?

    可以通过设置在 Swift 中隐藏由第 3 方库生成的过于详细的日志OS ACTIVITY MODE环境变量为disable在您的跑步计划中 如下图所示 这让所有人都沉默NSLog您的应用程序的输出 我只想对某些呼叫禁用它 我尝试像这样设置
  • 确定响应者链是否将处理操作

    响应者链很酷 http www cocoanetics com 2012 09 the amazing responder chain 特别是 能够将自定义操作发送给第一响应者 这些操作将冒泡给其他可能感兴趣的人 UIApplication
  • 如何在向上/向下滚动时隐藏/显示视图?

    如何在向上 向下滚动 android 时隐藏 显示视图Foodpanda app 我想隐藏 显示视图 线性或相对布局 ScrollView就像上面的 gif 一样向上 向下 但我的应用程序我不使用 Recyclerview 或列表视图 只是
  • graphviz dot:如何将箭头从节点插入到箭头中心

    我尝试使用 graphviz 包中的 dot 创建用于 MPLUS 分析的图表 有人有使用点可视化结构方程模型 潜在类混合模型的经验吗 特别是有一个功能我不知道如何做得漂亮 我需要从节点到另一个箭头中心的箭头 例如 C V A gt B 我
  • 尝试在 Preg_Match 中查找正斜杠

    我已经搜索了几个小时试图找到解决方案 我正在尝试确定 REQUEST URI 是否合法 并从那里对其进行分解 samplerequesturi variable 12345678910 要确定它是否合法 第一部分variable仅是字母并且
  • 使用单个字符或仅一个字符串进行 boost split

    我希望将字符串拆分为单个字符或字符串 我想用boost split因为 boost string 是我们基本字符串处理的标准 我不想混合几种技术 在单个字符的情况下我可以做split vec str is any of 但我想知道是否有办法
  • boost 的另一个“ld:未找到架构 x86_64 的符号”问题,这次是 mgiza

    我很抱歉问了这样一个常见的问题 我找不到任何可行的或足够清晰的解决方案供我实施 我只是想安装mgiza https github com moses smt mgiza 这是安装文件 cmake make make install If y
  • 监听队列(事件驱动,无轮询)服务总线/存储队列

    我试图弄清楚如何侦听队列上的事件 尤其是入队事件 假设我有一个控制台应用程序和一个服务总线队列 主题 如何连接到队列并等待新消息 我试图在没有While true 和不断的轮询 我试图以一种相当监听的方式来做更多的事情 比如保持连接到队列的
  • Grails 全局约束

    在 1 2 版本中 Grails 引入了全局约束 我尝试将以下内容添加到 Config groovy grails gorm default constraints notBlank nullable false blank false 然
  • NHibernate ThenFetchMany 正在检索重复的子项

    我有一个父对象 其子集合包含一个元素 子集合包含一个包含 3 个元素的 孙子 集合 我使用 NHibernate 从数据库加载父对象 如下所示 Parent parentObject session Query
  • Start-Process 与 Start-Sleep 不能很好地配合

    我的目标是运行多个进程并保存它们ProcessName and Id供以后使用 这是我的代码 System Collections ArrayList startedProcesses processStatus Start Process
  • 简单/基本的隐写算法和方法

    最基本和最简单的是什么隐写算法和方法 我的意思是应用于图像的隐写术 将数据隐藏到图像的简单程序如何工作 主要使用了哪些技术 程序如何在没有源图像的情况下识别图像中的加密消息 基本且最简单的隐写算法和方法是什么 我的意思是应用于图像的隐写术
  • Three.js ShaderMaterial 灯光问题

    你好 这是我的代码的一部分 地球仪 function createGlobe var normalMap THREE ImageUtils loadTexture images earth normal 2048 jpg var surfa
  • 在 django admin 过滤器 list_filter 中选择多个选项?

    目前我通过 django 管理界面中的某些选项进行过滤 例如 假设我按 按状态 过滤 是否可以选择多个状态来过滤结果 这是过滤器的屏幕截图 我可以从此列表中选择多个项目吗 不在管理 UI 中 但如果修改 URL 则可以使过滤条件更加复杂 例
  • EF 4.3(代码优先)- 确定何时将项目添加到虚拟 ICollection 属性

    当从查询加载 ICollection 虚拟成员时 有什么方法可以确定实际项目何时添加到 ICollection 虚拟成员中 希望下面的代码能够证明我的观点 public class DbAppointment public DbAppoin
  • F# 类型和循环

    我正在编写一个创建一副纸牌的 F 教程 列出了类型 但我无法理解如何循环遍历类型来创建完整套牌的地图 我期望做类似的事情 Foreach rank in ranks Foreach suit in suits somehow combine
  • 通过 Azure KeyVault 禁止控制台日志记录

    我正在 Net Core 2 控制台应用程序中使用 C 访问 Azure 密钥保管库 每当应用程序运行时 当我从保管库检索机密时 控制台窗口都会收到如下消息 2017 12 26T18 03 49 8610049Z 29c98a86 9e1
  • 如何为 iOS 和 macOS 编译 libffi?

    我正在尝试使用libffi https github com atgreen libffi在我的一个项目中 但我似乎无法为 iOS 或 macOS 就此而言 进行编译 以下是我在构建 iOS 模拟器时遇到的各种错误之一 bash src a
  • Python 3 async for 循环中的类型错误

    我正在学习 Python 相对较新的异步功能 我发现这个在PEP 492 https www python org dev peps pep 0492 example 2 以下是一个实用程序类 它将常规迭代转换为 异步的 虽然这不是一件非常