当前位置: 首页 > news >正文

trio ValueEvent

class AsyncValue(Generic[T]):

值包装器,提供等待值或过渡的能力。

概要:

>>> a = AsyncValue(0)  # 注意:可以包装任何类型(枚举,元组,...)
>>> ...
>>> a.value = 5   # 访问底层值
>>> ...
>>> # 等待值通过等式匹配
>>> await a.wait_value(7)
>>> ...
>>> # 通过谓词等待值匹配
>>> await a.wait_value(lambda v: v > 10)
>>> ...
>>> # 通过迭代获取值(具有最终一致性)
>>> async for value in a.eventual_values(lambda v: v > 10):
>>>     ...
>>> # 等待任何过渡
>>> await a.wait_transition()
>>> ...
>>> # 通过等式等待过渡
>>> await a.wait_transition(14)
>>> ...
>>> # 通过谓词等待过渡
>>> await a.wait_transition(lambda v, old: v > 10 and old < 0)
>>> ...
>>> # 通过迭代获取重复的过渡(在阻塞时错过值)
>>> async for value, _ in a.transitions(lambda v, old: v > 10 and old < 0):
>>>     ...

在使用此API中的任何等待方法或迭代器时,请注意,在调用者接收控制权之前,该值可能已经再次发生了变化。为了清晰,总是返回触发唤醒的特定值。

比较eventual_values()和transitions()迭代器:

eventual_values()                      transitions()
=================                      =============
• 高级别 & 安全                        • 低级别 & 需要小心
• 每次值变化和开始循环时进行评估       • 如果调用者在主体中未被阻塞,则每次值变化时进行评估
• 最终迭代最新值                       • 如果调用者被阻塞,可能会错过最新值
• 可能会错过快速的值变化               • 可能会错过快速的值变化
• 条件只使用新值                       • 条件使用新值和/或旧值
• 主要用于同步状态                     • 主要用于触发工作
• 不受用户竞争影响                     • 初始化和每次迭代可能存在竞争(尤其是在值变化不频繁的情况下)

性能注意:赋值给value属性通常具有O(N)的复杂性,其中N是主动等待的任务的数量。可能的话,共享的谓词会被分组,将N减少到活动谓词的数量。

http://www.lryc.cn/news/176738.html

相关文章:

  • js 新学一招,点击出现弹框,点击其他地方关闭弹框
  • c#扩展包-Stateless
  • Lua函数
  • 左对齐和右对齐
  • 高仿互站网站源码 后台手机端两套模板 电脑端二十套模版
  • Spring Controller内存马
  • Mysql004:用户管理
  • 计算机视觉与深度学习 | 视觉里程计(Visual Odometry,VO)研究现状
  • Mojo:新型AI语言中的7个令人惊叹的Python升级,用简单的英语解释人工智能
  • TCP连接的三次握手与四次挥手【重点】
  • ​重生奇迹MU新手玩家如何快速熟悉游戏​
  • MySQL 用户权限和远程访问设置
  • Golang基础之关键字
  • DataFrame插入多列PerformanceWarning: DataFrame is highly fragmented.
  • Springboot登录验证的统一拦截处理
  • 自定义类型详解(上)
  • 【数据库——MySQL】(9)函数、查询练习及讲解
  • 【数据结构与算法——C语言】“串操作与算法”之“找出最长串及其长度”
  • 泡泡玛特:一家中国潮玩品牌的出海之旅
  • 淘宝商品sku信息抓取接口api
  • MySQL 多表关系(多表查询 一)
  • 【面试高高手】——JavaIO篇(23题)
  • 图像采集 deep OCR
  • Linux 终端命令总结
  • 中国核动力研究设计院使用 DolphinDB 替换 MySQL 实时监控仪表
  • 速看!软考中项100条重要知识点集锦!
  • Pycharm在进行debug时出现collecting data如何解决?
  • 【算法分析与设计】算法概述
  • 如何进一步全面提高项目估算精准度?
  • Git学习笔记4