高效创建工作流,可实现类似unreal engine的蓝图效果,内部使用多线程高效执行节点函数

文章目录

前言(Introduction)

GraphExecuter 是一款基于 NodeGraphQt 开发的开源软件,采用 多线程图执行 架构,用户只需编写节点逻辑并通过连线构建图,即可自动调度并运行复杂的工作流。

该系统结合了 可视化节点编辑 和 高效并行计算,适用于数据处理、自动化任务、分布式计算等场景。开发者无需关心线程管理,只需专注于节点功能的实现,即可快速搭建高性能工作流。GraphExecuter 为需要 灵活、可扩展、可视化编排 的用户提供了便捷的解决方案,适用于从实验到生产的各种需求。

GraphExecuter is an open-source software built on NodeGraphQt, designed to simplify complex workflow execution through a node-based graph system. By utilizing multi-threading, it efficiently processes connected nodes, allowing users to focus on defining individual node logic while the framework handles task scheduling and parallel execution.

With an intuitive node-based interface, users can easily design, connect, and execute workflows for tasks like data processing, automation, or distributed computing. GraphExecuter is ideal for developers and researchers who need a flexible, visual, and high-performance way to manage complex workflows without dealing with low-level concurrency control.

code: GraphExecuter

video: 高效创建工作流,可实现类似unreal engine的蓝图效果,内部使用多线程高效执行节点函数

开发环境搭建(Development environment setup)

shell 复制代码
pip install -r .\requirements.txt

## 强制重新安装模块
pip install --force-reinstall --no-cache-dir pyside6

运行(Run test)

shell 复制代码
python main.py

❇️创建节点

❇️连接节点

❇️从选中节点开始运行图

开发者(Developer)

❇️编写节点(Create node type)

❇️注册节点(Register node type)

编译(Compile)

shell 复制代码
./compile.bat

生成的可执行文件存放在dist文件夹下

报错

❌框选节点的时候报错

shell 复制代码
Error calling Python override of QGraphicsView::mouseMoveEvent(): Traceback (most recent call last):
  File "D:\ProgramData\anaconda3\envs\DataProcessUI\Lib\site-packages\NodeGraphQt\widgets\viewer.py", line 619, in mouseMoveEvent
    self.scene().setSelectionArea(
TypeError: 'PySide6.QtWidgets.QGraphicsScene.setSelectionArea' called with wrong argument types:
  PySide6.QtWidgets.QGraphicsScene.setSelectionArea(QPainterPath, ItemSelectionMode)
Supported signatures:
  PySide6.QtWidgets.QGraphicsScene.setSelectionArea(path: PySide6.QtGui.QPainterPath, /, selectionOperation: PySide6.QtCore.Qt.ItemSelectionOperation = Instance(Qt.ReplaceSelection), mode: PySide6.QtCore.Qt.ItemSelectionMode = Instance(Qt.IntersectsItemShape), deviceTransform: PySide6.QtGui.QTransform = Default(QTransform))
  PySide6.QtWidgets.QGraphicsScene.setSelectionArea(path: PySide6.QtGui.QPainterPath, deviceTransform: PySide6.QtGui.QTransform, /)

✔️Pyside6和nodegraphqt版本不适配导致,更改viewer.py以下位置即可:

shell 复制代码
# "D:\ProgramData\anaconda3\envs\XXXXXXXX\Lib\site-packages\NodeGraphQt\widgets\viewer.py"

# self.scene().setSelectionArea(
#     path, QtCore.Qt.IntersectsItemShape
# )
self.scene().setSelectionArea(
    path,
    selectionOperation=QtCore.Qt.ItemSelectionOperation.ReplaceSelection,
    mode=QtCore.Qt.ItemSelectionMode.IntersectsItemShape
)
相关推荐
2301_803875612 分钟前
HTML怎么用Lawyer Zone对齐律所图_Lawyer专业主题图片布局
jvm·数据库·python
Polar__Star7 分钟前
golang如何实现Trie前缀树_golang Trie前缀树实现解析
jvm·数据库·python
悟空爬虫-彪哥9 分钟前
2026 Python UI 框架选择指南:从 Streamlit 到 Pyside6 的四层体系
开发语言·python·ui
weixin_4087177711 分钟前
SQL中JOIN不同存储引擎表的影响_索引兼容性与查询性能评估
jvm·数据库·python
qq_1898070312 分钟前
如何让导航栏的下落动画效果更慢?
jvm·数据库·python
梦无矶12 分钟前
快速设置uv默认源为国内镜像
数据库·redis·后端·python·uv
m0_5150984214 分钟前
HTML函数在低分辨率屏幕能正常编写吗_显示硬件最低适配说明【方法】
jvm·数据库·python
m0_7489203618 分钟前
如何利用宝塔面板设置网站限流策略_防止恶意高并发请求
jvm·数据库·python
bigcarp20 分钟前
windows server 2012上安装EdgeWebView2以支持pywebview项目
python
测试员周周20 分钟前
【CrewAI系列2】CrewAI 环境搭不好?纯小白从零部署指南,10 分钟搞定(命令可复制)
人工智能·python