---
title: UDF接口列表
description: "本文档主要描述UDF（User Defined Function）模块对外提供的接口，用户可以调用这些接口进行自定义处理函数的开发，然后通过DataFlow构图在CPU上执行该处理函数。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/dataflowdevg/udfrefp_23_0001.html
sourcePath: /source/zh/canncommercial/900/others/dataflowdevg/udfrefp_23_0001.html
indexId: 164b37e70407b3b189b6f7a1472e1b12a4d133f3dc25254b45a0405845f1501870
---
# UDF接口列表

本文档主要描述UDF（User Defined Function）模块对外提供的接口，用户可以调用这些接口进行自定义处理函数的开发，然后通过DataFlow构图在CPU上执行该处理函数。

您可以在CANN软件安装后文件存储路径下的“python/site-packages/dataflow/flow_func/flow_func.py”查看对应接口的实现。接口列表如下。

#### FlowMsg类

用于处理FlowFunc输入输出的相关操作。


**表1 FlowMsg类接口**

| 接口名称 | 简介 |
| --- | --- |
| FlowMsg构造函数 | FlowMsg的构造函数。 |
| get\_msg\_type | 获取FlowMsg的消息类型。 |
| get\_tensor | 获取FlowMsg中的tensor对象。 |
| set\_ret\_code | 设置FlowMsg消息中的错误码。 |
| get\_ret\_code | 获取输入FlowMsg消息中的错误码。 |
| set\_start\_time | 设置FlowMsg消息头中的开始时间戳。 |
| get\_start\_time | 获取FlowMsg消息中的开始时间戳。 |
| set\_end\_time | 设置FlowMsg消息头中的结束时间戳。 |
| get\_end\_time | 获取FlowMsg消息中的结束时间戳。 |
| set\_flow\_flags | 设置FlowMsg消息头中的flags。 |
| get\_flow\_flags | 获取FlowMsg消息头中的flags。 |
| set\_route\_label | 设置路由的标签。 |
| get\_transaction\_id | 获取FlowMsg消息中的事务ID，事务Id从1开始计数，每feed一批数据，事务Id会加一，可用于识别哪一批数据。 |
| set\_msg\_type | 设置FlowMsg的消息类型。 |
| get\_raw\_data | 获取rawdata类型的数据。 |
| set\_transaction\_id | 设置DataFlow数据传输使用的事务ID。 |


#### Tensor类

用于执行Tensor的相关操作。这里获取的Tensor是dataflow.Tensor。


**表2 Tensor类接口**

| 接口名称 | 简介 |
| --- | --- |
| Tensor构造函数 | Tensor构造函数。 |
| get\_shape | 获取Tensor的Shape。 |
| get\_data\_type | 获取Tensor中的数据类型。 |
| get\_data\_size | 获取Tensor中的数据大小。 |
| get\_element\_cnt | 获取Tensor中的元素的个数。 |
| reshape | 对tensor进行Reshape操作，不改变tensor的内容。 |


#### MetaParams类

使用该类获取共享的变量信息。


**表3 MetaParams类接口**

| 接口名称 | 简介 |
| --- | --- |
| PyMetaParams构造函数 | PyMetaParams构造函数。 |
| get\_name | 获取Flowfunc的实例名。 |
| get\_attr\_int | 获取指定名称的int类型属性值。 |
| get\_attr\_bool\_list | 获取指定名称的bool数组类型属性值。 |
| get\_attr\_int\_list | 获取指定名称的int数组类型属性值。 |
| get\_attr\_int\_list\_list | 获取指定名称的int二维数组类型属性值。 |
| get\_attr\_bool | 获取指定名称的bool类型属性值。 |
| get\_attr\_float\_list | 获取指定名称的float数组类型属性值。 |
| get\_attr\_tensor\_dtype | 获取指定名称的numpy dtype类型的属性值。 |
| get\_attr\_tensor\_dtype\_list | 获取指定名称的numpy dtype数组类型的属性值。 |
| get\_attr\_str | 获取指定名称的string类型的属性值。 |
| get\_attr\_str\_list | 获取指定名称的string数组类型的属性值。 |
| get\_attr\_float | 获取指定名称的float类型属性值。 |
| get\_input\_num | 获取Flowfunc的输入个数。 |
| get\_output\_num | 获取Flowfunc的输出个数。 |
| get\_work\_path | 获取Flowfunc的工作路径。 |
| get\_running\_device\_id | 获取正在运行的设备ID。 |


#### MetaRunContext类

用于FlowFunc处理函数的上下文信息相关处理，如申请Tensor、设置输出、运行FlowModel等操作。


**表4 MetaRunContext类接口**

| 接口名称 | 简介 |
| --- | --- |
| MetaRunContext构造函数 | MetaRunContext构造函数。 |
| alloc\_tensor\_msg | 根据shape、data type以及对齐大小申请tensor类型的FlowMsg。 |
| set\_output | 设置指定index的output的tensor。 |
| set\_multi\_outputs | 批量设置指定index的output的tensor。 |
| run\_flow\_model | 同步执行指定的模型。 |
| alloc\_empty\_data\_msg | 申请空数据的MsgType类型的message。 |
| get\_user\_data | 获取用户定义数据。 |
| raise\_exception | UDF主动上报异常。 |
| get\_exception | UDF获取其他UDF节点上报的异常。 |
| alloc\_raw\_data\_msg | 根据输入的size申请一块连续内存，用于承载raw data类型的FlowMsg。 |
| to\_flow\_msg | 将dataflow Tensor转换成FlowMsg。 |


#### AffinityPolicy类


**表5 AffinityPolicy类接口**

| 接口名称 | 简介 |
| --- | --- |
| AffinityPolicy类 | 亲和策略枚举定义。 |


#### BalanceConfig类

当需要均衡分发时，需要设置输出数据标识和权重矩阵相关配置信息，根据配置调度模块可以完成多实例之间的均衡分发。


**表6 BalanceConfig类接口**

| 接口名称 | 简介 |
| --- | --- |
| BalanceConfig构造函数 | BalanceConfig构造函数。 |
| set\_data\_pos | 设置输出数据对应权重矩阵中的位置。 |
| get\_inner\_config | 获取内部配置对象，被set\_output或者set\_multi\_outputs调用。 |


#### FlowMsgQueue类

流式输入场景下（即flow func函数入参为队列时），用于flow func的输入队列，队列中的FlowMsg出队后会根据MsgType转换为对应的数据类型返回给用户。


**表7 FlowMsgQueue类接口**

| 接口名称 | 简介 |
| --- | --- |
| FlowMsgQueue构造函数 | FlowMsgQueue构造函数和析构函数。 |
| get | 获取队列中的元素。 |
| get\_nowait | 无等待地获取队列中的元素，功能等同于get(block=False)。 |
| full | 判断队列是否满。 |
| full | 判断队列是否为空。 |
| qsize | 获取队列中当前元素的个数。 |


#### UDF日志接口

UDF Python开放了日志记录接口，使用时导入flow_func模块。使用其中定义的logger对象，调用logger对象封装的不同级别的日志接口。


**表8 UDF日志接口**

| 接口名称 | 简介 |
| --- | --- |
| FlowFuncLogger构造函数 | FlowFuncLogger构造函数。 |
| get\_log\_header | 获取日志扩展头信息。 |
| is\_log\_enable | 查询对应级别和类型的日志是否开启。 |
| 运行日志Error级别日志宏 | 运行日志Error级别日志宏。 |
| 运行日志Info级别日志宏 | 运行日志Info级别日志宏。 |
| 调试日志Error级别日志宏 | 调试日志Error级别日志宏。 |
| 调试日志Warn级别日志宏 | 调试日志Warn级别日志宏。 |
| 调试日志Info级别日志宏 | 调试日志Info级别日志宏。 |
| 调试日志Debug级别日志宏 | 调试日志Debug级别日志宏。 |
