
# 检查异步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。 **取值范围：** 无。 **默认取值：** 无。 |
   
 表2CcFuture 
| **方法名称** | 参数 | 返回结果                                                                                                                                  | **描述**                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| result   | 无  | [表4](https://support.huaweicloud.com/sdk-python-devg-ems/obs_22_0019.html#obs_22_0019__zh-cn_topic_0000002422061148_table2144mcpsimp) | **参数解释：** 获取异步执行的结果。 **取值范围：** 无。 |
   
#### 返回结果
表3返回结果 
| **类型** | **说明**                                                                                                                                                                                                                             |
|:---|:---|
| bool   | **参数解释：** 异步计算是否完成。返回True表示已完成；返回False表示尚未完成。 **取值范围：** 无。 |
   
#### 代码样例
本示例用于多次下发异步加载KVCache的请求，并获取每个请求的最终执行结果。
1. slot_mapping语义下的验证异步计算是否完成，参数：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. chunk_descs 语义下的验证异步计算是否完成，参数：hashes + chunk_descs
   ```
   # 设置请求的超时时间
   option = CcKvOption(timeout=5000)
   block_size = 4
   hashes = [0xABCD, 0x1234]
   chunk_descs = [[(0, 4),(4, 4)]] 
   # 发起异步保存
   future = cc.async_save(hashes = hashes, chunk_descs = chunk_descs, option = option)
   # 使用 is_ready 非阻塞检查
   if cc.is_ready(future):
       print("async_save(token) 已完成")
   else:
       print("async_save(token) 仍在进行中")
   ```
   
 
