python 3.5的异步生成器和上下文管理器+

async_generator的Python项目详细描述


Join chatroomDocumentation StatusAutomated test statusAutomated test status (Windows)Test coverage

异步发生器库

python 3.6添加了async generators。(什么是异步 发电机?Check out my 5-minute lightning talk demo from PyCon 2016.)python 3.7增加了更多内容 使它们可用的工具,如contextlib.asynccontextmanager

这个库将所有这些都返回到Python3.5。

例如,此代码仅适用于Python3.6+:

asyncdefload_json_lines(stream_reader):asyncforlineinstream_reader:yieldjson.loads(line)

但这段代码也做了同样的事情,并且在Python3.5+上运行:

fromasync_generatorimportasync_generator,yield_@async_generatorasyncdefload_json_lines(stream_reader):asyncforlineinstream_reader:awaityield_(json.loads(line))

或者在Python3.7中,您可以编写:

fromcontextlibimportasynccontextmanager@asynccontextmanagerasyncdefbackground_server():asyncwithtrio.open_nursery()asnursery:value=awaitnursery.start(my_server)try:yieldvaluefinally:# Kill the server when the scope exitsnursery.cancel_scope.cancel()

这是相同的,但回到3.5:

fromasync_generatorimportasync_generator,yield_,asynccontextmanager@asynccontextmanager@async_generatorasyncdefbackground_server():asyncwithtrio.open_nursery()asnursery:value=awaitnursery.start(my_server)try:awaityield_(value)finally:# Kill the server when the scope exitsnursery.cancel_scope.cancel()

(如果您使用的是3.6,那么可以使用@asynccontextmanager和 本机生成器。)

让我们这样做

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
部署在kubernetes上时,微服务中服务间通信中的java连接超时问题   java Nway合并对2G字符串文件进行排序   java如何使用FlexJson按特定顺序序列化对象和属性   如何在java布尔方法中导入文本文件   swing需要帮助在我的Java GUI中实现用户输入的侦听器   java如何读取枚举中Spring Messagesource的内容?   每个Ajaxcall上(之前和之后)的java Javascript   java compareTo(Comparable)方法对于Comparable类型未定义   带换行符的java Bash输入重定向   使用Spring授权标记检查用户是否登录时发生java错误?   使用大尺寸(100000)数组执行快速排序时出现Java StackOverflower错误   java forEach迭代器标记   Java ClassNotFound异常,Maven依赖项作为JAR   java将HQL转换为SQL查询   java正在将片段列表发送到FragmentPagerAdapter   java onActivityResult应该调用super。onActivityResult   java如果我导入一个超类,我也需要导入它的子类吗?   java是否可以通过openid协议对aadhar进行身份验证