获取异步IO结果
功能介绍
用于获取async_save、async_load等接口返回的异步Future对象的结果。调用get_result将阻塞,直到异步计算完成,并返回以token为单位的结果对象。
接口约束
- 接口会休眠阻塞,直到异步结果可用。
- 输入必须是CcFuture类型对象,由 async_save/async_load返回。
方法定义
ContextCaching.get_result(ccfuture)
请求参数说明
参数名称 |
参数类型 |
是否必选 |
描述 |
---|---|---|---|
ccfuture |
是 |
参数解释: 异步计算返回的Future对象。 约束限制: 必须为async_save或async_load等接口返回的CcFuture实例,不能为None。 取值范围: 无。 默认取值: 无。 |
返回结果
类型 |
说明 |
---|---|
参数解释: Context Caching访问内存池的执行结果。 取值范围: 无。 |
代码样例
本示例用于异步保存KVCache的请求,并获取每个请求的最终执行结果。
- hash语义下的保存和加载显存数据,参数:slot_mapping + hashes + offsets
# 设置save请求的超时时间 option = CcKvOption(timeout=5000) # 异步保存,获取结果 block_size = 4 slot_mapping = [0, 1, 2, 3, 4, 5, 6, 7] hashes = [0xABCD, 0x1234] offsets = [4, 4] try: fut = cc.async_save(slot_mapping = slot_mapping, hashes = hashes, offsets = offsets, option = option) res = cc.get_result(fut) print("async_save(hash) result:", res) except EmsException as e: print("async_save(hash) result:", res) # 异步读取,获取结果 try: fut = cc.async_load(slot_mapping = slot_mapping, hashes = hashes, offsets = offsets, option = option) res = cc.get_result(fut) print("async_load(hash) result:", res) except EmsException as e: print(f"async_load(hash) failed: {e}")
- token语义下的保存和加载显存数据,参数:slot_mapping + token_ids + mask
# 设置save请求的超时时间 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] try: fut = cc.async_save(slot_mapping slot_mapping = , token_ids = token_ids, mask = mask, option = option) res = cc.get_result(fut) print("async_save(token) result:", res) except EmsException as e: print(f"async_save(token) failed: {e}") # 异步读取,获取结果 try: fut = cc.async_load(slot_mapping slot_mapping = , token_ids = token_ids, mask = mask, option = option) res = cc.get_result(fut) print("async_load(token) result:", res) except EmsException as e: print(f"async_load(token) failed: {e}")