更新时间:2025-09-08 GMT+08:00
分享

检查异步IO状态

功能介绍

用于检测async_save、async_load等接口返回的异步Future对象是否已完成计算。调用is_ready不会阻塞,适合在轮询或超时控制场景下使用。

接口约束

  • 接口为非阻塞调用。
  • 输入必须是CcFuture类型对象,由async_save/async_load返回。
  • 仅判断完成状态,不返回计算结果。

方法定义

ContextCaching.is_ready(ccfuture)

请求参数说明

表1 请求参数列表

参数名称

参数类型

是否必选

描述

ccfuture

表2

参数解释:

异步计算返回的 Future 对象。

约束限制:

必须为async_save或async_load 等接口返回的 CcFuture 实例,不能为None。

取值范围:

无。

默认取值:

无。

表2 CcFuture

方法名称

参数

返回结果

描述

result

表4

参数解释:

获取异步执行的结果。

取值范围:

无。

返回结果

表3 返回结果

类型

说明

bool

参数解释:

异步计算是否完成。返回True表示已完成;返回False表示尚未完成。

取值范围:

无。

代码样例

本示例用于多次下发异步加载KVCache的请求,并获取每个请求的最终执行结果。

  1. hash语义下的验证异步计算是否完成,参数:slot_mapping + hashes + offsets
    # 设置请求的超时时间
    option = CcKvOption(timeout=5000)
    block_size = 4
    slot_mapping = [0, 1, 2, 3, 4, 5, 6, 7]
    hashes = [0xABCD, 0x1234] 
    offsets = [4, 4]
    # 发起异步保存
    future = cc.async_save(slot_mapping = slot_mapping, hashes = hashes, offsets = offsets, option = option)
    # 使用 is_ready 非阻塞检查
    if cc.is_ready(future):
        print("async_save(hash) 已完成")
    else:
        print("async_save(hash) 仍在进行中")
  2. token语义下的验证异步计算是否完成,参数:slot_mapping + token_ids + mask
    # 设置请求的超时时间
    option = CcKvOption(timeout=5000)
    block_size = 4
    slot_mapping = [0, 1, 2, 3, 4, 5] 
    token_ids    = [101, 102, 103, 104, 105, 106]
    mask         = [0, 0, 0, 0, 1, 1]
    # 发起异步保存
    future = cc.async_save(slot_mapping = slot_mapping, token_ids = token_ids,mask = mask, option = option)
    # 使用 is_ready 非阻塞检查
    if cc.is_ready(future):
        print("async_save(token) 已完成")
    else:
        print("async_save(token) 仍在进行中")

相关文档