PythonThread Python线程算子

PythonThread 算子用于在 RVS 的分线程中执行 python 脚本。

由于 PythonThread 算子从属于 Thread 类算子,所以多个并列的 PythonThread 算子可以同时运行。

而 PythonSimple 算子从属于普通算子,运行会占用主线程,所以多个 PythonSimple 算子即便并行连接,实际执行时还是先后依次运行。

关于RVS中算子并行连接时的执行顺序的简单说明:

  1. RVS 中的 ThreadNode 结尾的算子都是线程类算子,运行时间较长。(下文说明基于普通算子的运行时间较短的情况)

  2. Thread 算子在被触发后,会占用主线程极短暂的时间,然后进入分线程执行功能函数,释放主线程,从而可以继续触发执行下一个算子。

  3. 在某一个并行连接结构中,比如算子 A 触发算子 B ,算子 B 触发算子 C ;且算子 A 触发算子 D ,算子 D 触发算子 E 。无论 B 或者 D 两者中是否含有 thread算子,RVS 的执行都是等两者全部运行完成,才会去考虑执行 C 或者 E(此时 C/E 虽然不是源自同一个起点,但是执行的先后顺序也是按照并行连接来考虑)。

  4. 当 B 和 D 都是 thread 算子时,两个并行的 thread 可以同时运行,此时能有效节省运行时间。比如 B 运行 3 秒,D 运行 5 秒,则两者的并行连接只需要运行 5s 就可以执行到 C/E 算子,而串形连接需要运行 8s 才能执行到 C/E 。

  5. 将一个 thread 算子同一个普通算子并行连接,理论上只能节省该普通算子的运行时间,意义不大,不建议这种连接方式。

  6. 多个算子(普通算子或者线程算子)并行连接,按照算子名称的字符串从小到大的顺序,依次触发。

​ 注意:该 python 脚本需要在 GeneratePython 算子生成的模板中进行编写。

算子参数

  • Python配置文件/python_config_file:定义 python 脚本同 RVS 交互时的输入输出端口。

    说明:必须同所需执行的 python 脚本保持命名一致。

  • 重置reinit函数/re_ini:bool 变量,默认 True。

    • True:在算子执行时,调用一次 python 脚本中的 re_ini 函数(执行顺序在 process 函数之前),算子触发一次以后 re_ini 变量自动重置为 False 状态。

    • False:在算子执行时,不调用python 脚本中的 re_ini 函数。

功能演示

本节将使用 PythonThread 进行线程算子案例演示。这与 PythonSimple 算子中展现的演示方法相同,请参照该章节的功能演示。