首页 > 其他分享 >迭代器与异步迭代器

迭代器与异步迭代器

时间:2023-05-31 16:47:50浏览次数:29  
标签:__ 异步 迭代 self async def

迭代器

class Reader(object):
    """ 自定义异步迭代器(同时也是异步可迭代对象) """
    def __init__(self):
        self.count = 0
    def readline(self):
        # await asyncio.sleep(1)
        self.count += 1
        if self.count == 100:
            return None
        return self.count
    def __iter__(self):
        return self
    def __next__(self):
        val =self.readline()
        if val == None:
            raise StopAsyncIteration
        return val
def func():
    # 创建异步可迭代对象
    async_iter = Reader()
    # async for 必须要放在async def函数内,否则语法错误。
    for item in async_iter:
        print(item)
func()

异步迭代器

import asyncio
class Reader(object):
    """ 自定义异步迭代器(同时也是异步可迭代对象) """
    def __init__(self):
        self.count = 0
    async def readline(self):
        # await asyncio.sleep(1)
        self.count += 1
        if self.count == 100:
            return None
        return self.count
    def __aiter__(self):
        return self
    async def __anext__(self):
        val = await self.readline()
        if val == None:
            raise StopAsyncIteration
        return val
async def func():
    # 创建异步可迭代对象
    async_iter = Reader()
    # async for 必须要放在async def函数内,否则语法错误。
    async for item in async_iter:
        print(item)
asyncio.run(func())
View Code

 

标签:__,异步,迭代,self,async,def
From: https://www.cnblogs.com/zhuangjoo/p/17446569.html

相关文章

  • 迭代加深搜索与埃及分数求解
    迭代加深搜索,实质上是限定下界的深度优先搜索。即首先允许深度优先搜索K层,若没有发现可行解,再将K+1后重复以上步骤搜索,直到搜索到可行解。在迭代加深搜索的算法中,连续的深度优先搜索被引入,每一个深度约束逐次加1,直到搜索到目标为止。这样可以看出重复搜索了好多。但是它的好处在于:......
  • ES transport client底层是netty实现,netty本质上是异步方式,但是netty自身可以使用sync
    EStransportclient底层是netty实现,netty本质上是异步方式,但是netty自身可以使用sync或者await(future超时机制)来实现类似同步调用!因此,EStransportclient可以同步调用也可以异步(不过底层的socket必然是异步实现)。发送端例子对于javaclient的数据发送(这里以bulk为例),写过的人都知......
  • SimpleAdmin手摸手教学之:基于Ant Design Tree组件实现树形结构数据的异步加载
    一、说明当有一个树形结构的数据有非常多个节点的时候,一次性加载所有节点会显得过于臃肿,可能会对性能造成影响,正好AntDesign的树(Tree)组件支持异步加载,于是我就想把异步加载封装为一个组件,可以减少接口数据返回,点击展开节点,动态加载数据。非常好用!二、前端实现需要接收一些......
  • dfs 二叉树中序遍历迭代解法——求解BST中第k小元素
    BST中第K小的元素中文English给一棵二叉搜索树,写一个 KthSmallest 函数来找到其中第K小的元素。Example样例1:输入:{1,#,2},2输出:2解释: 1 \ 2第二小的元素是2。样例2:输入:{2,1,3},1输出:1解释:2/\13第一小的元素是1。Challenge如果这棵BST经常会被修改(......
  • 被用到炉火纯清的迭代器模式
    0x01:迭代器模式简介Java中可以说已经把迭代器模式用到了极致,每一个集合类都关联了一个迭代器类Iterator。迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。UML类图如下:其中,Aggregate是聚集抽象类,负责提供创建具体迭代器角色的接口;Iter......
  • echarts——环形图,异步请求数据后,有数据但图不显示
    echats官网:https://echarts.apache.org/ 我的原因:series里的data数据,需要是value,name格式,我的后台返回的数据是{number:1,typeName:'1'}解决方法:做下转换res.result.forEach(item=>{item.name=item.typeName;item.value=item.number;}) ......
  • Python异步编程之web框架 异步vs同步 文件IO任务压测对比
    测试基本信息主题:比较异步框架和同步框架在文件IO操作的性能差异python版本:python3.8压测工具:locustweb框架:同步:flask异步:aiohttp、starlette异步文件模块:aiofiles、anyio.Path请求并发量:模拟10个用户服务器配置:Intel(R)i7-12700F客户端配置:Intel(R)i7-87003......
  • 接口、定时、异步
    1远程接口1.1URL与HttpUrlConnection//接口路径Stringpath="";//创建URLURLurl=newURL(path);//连接HttpURLConnectionurlConnection=(HttpURLConnection)url.openConnection();//开始连接urlConnection.connect();//获取字节流......
  • C# 异步编程(await、async&Task)
    视频链接:.NET6教程,.NetCore2022视频教程,杨中科主讲_哔哩哔哩_bilibili异步编程为什么要异步编程?几个误区:(1)异步不一定能提高效率(2)异步不是多线程传统多线程异步开发太麻烦。C#关键字:async、await。【async、await不等于“多线程”】async、await的基本使用“异步方法”:......
  • 斐波那契数列:2.迭代法
    斐波那契数列:2.迭代法#include<stdio.h>intfib(intm){if(m==1||m==2){return1;}inta=1,b=1,aw=0;while(m>=2){aw=aw+a;a=b;b=aw;m=m-1;}returnaw;}intmain(){intn;scanf("%d",&n);p......