计算机中异步生成器函数的用法是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机中异步生成器函数的用法是啥?相关的知识,希望对你有一定的参考价值。

程序开发中异步生成器函数的用法

异步生成器函数就是使用def定义的函数yield
1.在一个使用 async def 定义的函数或方法中出现的 yield 表达式会进一步将该函数定义为一个 asynchronous generator 函数。
2.当一个异步生成器函数被调用时,它会返回一个名为异步生成器对象的异步迭代器。 此对象将在之后控制该生成器函数的执行。 异步生成器对象通常被用在协程函数的 async for 语句中,类似于在 for 语句中使用生成器对象。
3.调用异步生成器的方法之一将返回 awaitable 对象,执行会在此对象被等待时启动。 到那时,执行将前往第一个 yield 表达式,在那里它会再次暂停,将 expression_list 的值返回给等待中的协程。 与生成器一样,挂起意味着局部的所有状态会被保留,包括局部变量的当前绑定、指令的指针、内部求值的堆栈以及任何异常处理的状态。 当执行在等待异步生成器的方法返回下一个对象后恢复时,该函数可以从原状态继续进行,就仿佛 yield 表达式只是另一个外部调用。 恢复执行之后 yield 表达式的值取决于恢复执行所用的方法。 如果使用 __anext__() 则结果为 None。 否则的话,如果使用 asend() 则结果将是传递给该方法的值。
4.在异步生成器函数中,yield 表达式允许出现在 try 结构的任何位置。 但是,如果一个异步生成器在其被终结(由于引用计数达到零或被作为垃圾回收)之前未被恢复,则then a yield expression within a try 结构中的 yield 表达式可能导致挂起的 finally 子句执行失败。 在此情况下,应由运行该异步生成器的事件循环或任务调度器来负责调用异步生成器-迭代器的 aclose() 方法并运行所返回的协程对象,从而允许任何挂起的 finally 子句得以执行。
5.为了能处理最终化,事件循环应该定义一个 终结器 函数,它接受一个异步生成器-迭代器且可能调用 aclose() 并执行协程。 这个 终结器 可能通过调用 sys.set_asyncgen_hooks() 来注册。 当首次迭代时,异步生成器-迭代器将保存已注册的 终结器 以便在最终化时调用。

参考技术A 异步生成器函数就是使用def定义的函数yield 在一个使用 async def 定义的函数或方法中出现的 yield 表达式会进一步将该函数定义为一个 asynchronous generator 函数。 当一个异步生成器函数被调用时,它会返回一个名为异步生成器对象的异步迭代器。 此对象将在之后控制该生成器函数的执行。 异步生成器对象通常被用在协程函数的 async for 语句中,类似于在 for 语句中使用生成器对象。 参考技术B 静电除尘器以静电净化法进行收捕烟气中粉尘的装置。是净化工业废气的理想设备。它的净利化工作主依靠放电极和沉淀极这两个系统来完成。当两极间输入高压直流电时的电极空间,产生阴、阳离子,并作用于通过静电场的废气粉尘粒子表面,在电场力的作用下向其极性相反的电极移动,并沉积于电极上,达到收尘目的。两极系统均有振打装置,当振打锤型周期性的敲打两极装置时,粘附在其上的粉尘被抖落,落入下部灰斗经排灰装置排出机外。被净化的废气由出口经烟囱排入大气中,此时完成了烟气净化过程

以上是关于计算机中异步生成器函数的用法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

matlab里的unwrap的命令用法是啥?

Python生成器及send用法讲解

在oracle数据库中nvl()是啥函数?

VC有一个计算两个日期之间的函数是啥我想不起来了

在oracle数据库中nvl()是啥函数?

sql中round(),floor(),ceiling()函数的用法和区别分别是啥?