chronaxis.execution.memory_reader
在既有内存适配器之外预留输入、批次与协议状态预算。
输入SourceSpec本来已完整存在于调用方内存;封装构造前核算它和信号声明, 不声称控制过去的分配或全进程RSS。输出为既有适配器实际SignalBatch, 归一化次数、backend、分批、原顺序、watermark/EOF和异常原因不改变。 每请求预留最坏两个交接批次及来源pending状态,再创建/推进内部生成器; NumPy字符串按最大原宽度×N核算Unicode数组/临时副本,不能只计原字符串总长。 超限明确失败,不偷偷减小batch_rows、切换后端或丢样本。所有预算至EOF/close释放, 外部长期保存owned批次不在本封装内部预算保证内;不读取CSV、旧日志或DBC。
这是模块参考。日常调用先查公开API索引;下划线对象和嵌套函数供维护者查阅。签名来自固定源码,公开类构造签名经实际Python接口核对。
相关类型
MemorySourceAdapter、ReadRequest、ResourceBudget、SignalBatch、SignalDefinition、SourceClosedError、SourceDescription、SourceSpec
对象导航
| 对象 | 用途 |
|---|---|
BudgetedMemorySourceAdapter |
共享一个输入预留,为各读取请求保留独立批次/协议最坏预算。 |
BudgetedMemorySourceAdapter.__init__ |
核算已有完整输入后建立原适配器,不提前生成数组。 |
BudgetedMemorySourceAdapter._ensure_open |
拒绝已关闭来源,不以空批掩盖错误。 |
BudgetedMemorySourceAdapter.describe |
直接返回原适配器静态描述,不提升来源能力或观测证据状态。 |
BudgetedMemorySourceAdapter._request_cost |
计算一个读取请求在全部next期间持有的最坏预留。 |
BudgetedMemorySourceAdapter.iter_batches |
预留整次请求的最坏缓冲/状态,再创建实际批次生成器。 |
BudgetedMemorySourceAdapter.close |
关闭所有请求及原适配器,释放本封装预留并保留调用方原输入。 |
_BudgetedBatches |
持有一请求的预留/原生成器/当前批,EOF或close时抵销一次预留。 |
_BudgetedBatches.__init__ |
先申请再创建原请求,构造失败不保留请求状态。 |
_BudgetedBatches.__iter__ |
返回本独立游标。 |
_BudgetedBatches.__next__ |
在整次预留覆盖下推进原适配器,不重复归一化或改进度。 |
_BudgetedBatches.close |
关闭本请求原生成器,释放当前批引用和最坏预留,其他请求保持独立。 |
导入与重导出来源(展开)
from collections.abc import Iterator
from ..core.binding import SignalDefinition
from ..core.models import SourceSpec
from ..results.budget import ResourceBudget
from ..results.spool import _cleanup_owner, _reserve_owned_ram, _release_owned_ram
from ..sources.memory import MemorySourceAdapter
from ..sources.models import ReadRequest, SignalBatch, SourceDescription
from ..sources.protocol import SourceClosedError
from .history import _metadata_bytesBudgetedMemorySourceAdapter
共享一个输入预留,为各读取请求保留独立批次/协议最坏预算。
adapter只在预留成功后建立;info存每别名实际投影总数与最大原字符串字符数。 active登记活动请求,close尝试关闭全部并释放输入引用,原SourceSpec不修改。 _uninstalled_read保构造或登记未返回的真实请求;_closing先拒绝新读,closed仅在 所有子请求、原适配器及本层_input_cost实际释放后成立。
BudgetedMemorySourceAdapter(budget: ResourceBudget, source: SourceSpec, session_id: str, signals: tuple[SignalDefinition, ...], *, backend: str='numpy', clock_only=(), retain_original=True)源码:src/chronaxis/execution/memory_reader.py:24(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
BudgetedMemorySourceAdapter.__init__
核算已有完整输入后建立原适配器,不提前生成数组。
BudgetedMemorySourceAdapter.__init__(budget: ResourceBudget, source: SourceSpec, session_id: str, signals: tuple[SignalDefinition, ...], *, backend: str='numpy', clock_only=(), retain_original=True)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
budget |
ResourceBudget | 是 | 无 | 位置或关键字。本次运行共用的ResourceBudget对象,用于检查内存和临时磁盘用量。当前对象在分配前申请额度,用完后归还;同一次运行的组件应使用同一个对象。 |
source |
SourceSpec | 是 | 无 | 位置或关键字。内存来源声明,包含可控样本行及时间基准。 |
session_id |
str | 是 | 无 | 位置或关键字。本次会话的名字,用来防止把不同试验的数据混在一起。 |
signals |
tuple[SignalDefinition, ...] | 是 | 无 | 位置或关键字。该来源需要输出的信号定义,按别名、原字段和类型解释样本。 |
backend |
str | 否 | 'numpy' | 仅关键字。"reference"使用独立参考计算;"numpy"使用NumPy数组计算。须明确选择一种。 |
clock_only |
tuple[str, ...] | 否 | () | 仅关键字。仅作为时间驱动的信号别名集合;保留真实更新时刻,不解析或构造该信号的数值样本。 |
retain_original |
bool | 否 | True | 仅关键字。是否保留解析前原始文本;关闭时仍解析并检查输入,只是不保存原文副本。 |
返回说明
新封装。
异常说明
配置/预算/原适配器初始化原错;持续清理失败附 memory_source_cleanup_owner,恢复后从该真实owner重试close。
源码:src/chronaxis/execution/memory_reader.py:33(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
BudgetedMemorySourceAdapter._ensure_open
拒绝已关闭来源,不以空批掩盖错误。
BudgetedMemorySourceAdapter._ensure_open() -> None参数:无显式参数。
参数说明
无。
返回说明
返回None,不返回额外的计算值。
异常说明
SourceClosedError为已关闭。
本函数直接报告的具体错误:
SourceClosedError:预算内存来源已关闭或正在清理。
返回类型:None。
源码:src/chronaxis/execution/memory_reader.py:70(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
BudgetedMemorySourceAdapter.describe
直接返回原适配器静态描述,不提升来源能力或观测证据状态。
BudgetedMemorySourceAdapter.describe() -> SourceDescription参数:无显式参数。
参数说明
无。
返回说明
SourceDescription。
异常说明
关闭/原描述错误传播。
返回类型:SourceDescription。
源码:src/chronaxis/execution/memory_reader.py:78(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
BudgetedMemorySourceAdapter._request_cost
计算一个读取请求在全部next期间持有的最坏预留。
BudgetedMemorySourceAdapter._request_cost(request: ReadRequest) -> int参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
request |
ReadRequest | 是 | 无 | 位置或关键字。request为当前会话/投影/批次上限。 |
返回说明
保守bytes,非RSS。
异常说明
ValueError为请求会话/别名错误,其他预算错误由申请点报告。
本函数直接报告的具体错误:
ValueError:预算内存来源请求会话/投影错误。
返回类型:int。
源码:src/chronaxis/execution/memory_reader.py:86(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
BudgetedMemorySourceAdapter.iter_batches
预留整次请求的最坏缓冲/状态,再创建实际批次生成器。
BudgetedMemorySourceAdapter.iter_batches(request: ReadRequest) -> Iterator[SignalBatch]参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
request |
ReadRequest | 是 | 无 | 位置或关键字。request为既有读取请求,不改变batch_rows。 |
返回说明
独立预算游标。
异常说明
请求/预算/原来源错误传播;超限在数组归一化之前失败,持续清理 失败附memory_read_cleanup_owner,来源也保留未返回read槽。
返回类型:Iterator[SignalBatch]。
源码:src/chronaxis/execution/memory_reader.py:107(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
BudgetedMemorySourceAdapter.close
关闭所有请求及原适配器,释放本封装预留并保留调用方原输入。
BudgetedMemorySourceAdapter.close() -> None参数:无显式参数。
参数说明
无。
返回说明
返回None。关闭成功后再次调用不会重复释放同一份资源。
异常说明
首个原关闭错误附memory_source_cleanup_owner; 其他独立read也尝试关闭,子责任未完成时保留来源合同与全部未释放槽。
返回类型:None。
源码:src/chronaxis/execution/memory_reader.py:133(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
_BudgetedBatches
持有一请求的预留/原生成器/当前批,EOF或close时抵销一次预留。
_BudgetedBatches(owner: BudgetedMemorySourceAdapter, request: ReadRequest, cost: int)源码:src/chronaxis/execution/memory_reader.py:173(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
_BudgetedBatches.__init__
先申请再创建原请求,构造失败不保留请求状态。
_BudgetedBatches.__init__(owner: BudgetedMemorySourceAdapter, request: ReadRequest, cost: int)参数
| 名称 | 数据类型 | 必填 | 省略时的值 | 用途、取值和效果 |
|---|---|---|---|---|
owner |
BudgetedMemorySourceAdapter | 是 | 无 | 位置或关键字。owner为预算来源 |
request |
ReadRequest | 是 | 无 | 位置或关键字。request为原请求 |
cost |
int | 是 | 无 | 位置或关键字。cost为最坏预留。 |
返回说明
独立游标。
异常说明
预算或原请求初始化原错,持续清理失败附memory_read_cleanup_owner; 未实际入账不抵销,返回途中取消仍登记原cost槽。
源码:src/chronaxis/execution/memory_reader.py:176(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
_BudgetedBatches.__iter__
返回本独立游标。
_BudgetedBatches.__iter__() -> '_BudgetedBatches'参数:无显式参数。
参数说明
无。
返回说明
返回当前对象本身。后续迭代或with语句使用的仍是同一个对象。
异常说明
无。
返回类型:'_BudgetedBatches'。
源码:src/chronaxis/execution/memory_reader.py:195(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
_BudgetedBatches.__next__
在整次预留覆盖下推进原适配器,不重复归一化或改进度。
_BudgetedBatches.__next__() -> SignalBatch参数:无显式参数。
参数说明
无。
返回说明
原适配器实际批次。
异常说明
EOF/关闭/原来源错误,故障清理保留根因。
本函数直接报告的具体错误:
SourceClosedError:预算内存请求正在清理。
返回类型:SignalBatch。
源码:src/chronaxis/execution/memory_reader.py:202(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。
_BudgetedBatches.close
关闭本请求原生成器,释放当前批引用和最坏预留,其他请求保持独立。
_BudgetedBatches.close() -> None参数:无显式参数。
参数说明
无。
返回说明
返回None。关闭成功后再次调用不会重复释放同一份资源。
异常说明
原生成器或释放错误附memory_read_cleanup_owner; 原生成器未成功关闭时保留原对象和费用,其他请求保持独立。
返回类型:None。
源码:src/chronaxis/execution/memory_reader.py:223(行号属于 8904c2f744951857659abd40aaa3535d57faf53c)。