You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从嵌入式Python向ECL返回多维列表?及调整工作单元输出限制

针对ECL与嵌入式Python交互问题的解答

1. 从嵌入式Python返回3D列表至ECL

可以实现,但需要将Python的3D列表结构映射为ECL支持的嵌套记录集格式,具体操作如下:

  • 先在ECL中定义匹配3D结构的嵌套RECORD:
    // 最内层元素的结构(根据实际数据类型调整)
    InnerElem := RECORD
        INTEGER Value;
    END;
    
    // 中层:对应3D列表中的"行",包含多个内层元素
    RowLayout := RECORD
        InnerElem Elements[]; // 数组类型存储一行的元素
    END;
    
    // 顶层:对应3D列表中的"层",包含多个行
    LayerLayout := RECORD
        RowLayout Rows[]; // 数组类型存储一层的行
    END;
    
  • 在Python代码中构造匹配该结构的嵌套列表,每个层级对应ECL的数组字段,示例:
    # 构造3D结构示例:2层,每层2行,每行2个元素
    three_d_list = [
        [
            [{"Value": 1}, {"Value": 2}],
            [{"Value": 3}, {"Value": 4}]
        ],
        [
            [{"Value": 5}, {"Value": 6}],
            [{"Value": 7}, {"Value": 8}]
        ]
    ]
    return three_d_list
    
  • 在ECL中调用Python函数时,指定返回类型为LayerLayout,即可正确解析3D结构。

2. 修改工作单元的输出大小限制

遇到Dataset too large to output to workunit(limit is set to 10)megabytes错误时,可通过以下方式解决:

方式一:ECL代码临时设置

在输出数据集的语句前,使用SET WORKUNIT OUTPUTLIMIT命令指定输出上限(单位:兆字节),示例:

// 设置输出限制为50MB
SET WORKUNIT OUTPUTLIMIT = 50;
// 输出目标数据集
OUTPUT(YourImageDataset);

方式二:全局默认配置修改(HCI界面)

登录ECL的HCI管理界面,进入System Configuration,找到Workunit相关配置项,修改Default Output Limit的数值,该设置会作用于所有新创建的工作单元。

额外优化建议

如果只是需要后续处理数据集而非直接查看,不建议直接输出大数据集到Workunit,推荐使用PERSIST命令将数据集持久化到磁盘,后续直接引用即可:

// 持久化数据集到磁盘
PERSIST(YourImageDataset, 'PersistedImageData');

// 后续使用时直接加载
ImageData := DATASET('PersistedImageData', layout);

内容的提问来源于stack exchange,提问作者Shashank B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:07:13