一次超分的进程往返

配置 base64 后当命令行参数下去,stdout 文本流上来,界面靠三个哨兵正则解析进度

一次超分的进程往返 配置 base64 后当命令行参数下去,stdout 文本流上来,界面靠三个哨兵正则解析进度 配置对象过 IPC 送到主进程 模型、设备、目标倍率、输入输出路径、是否分块 spawn:配置 JSON 先 base64,当成 -b 参数 绕开跨平台 shell 的引号与空格 stdout 文本流 原样转发,不做解析 百分比、跳过的图、完成标记,全靠界面侧三个正则捞 超分结果写盘 进程退出码 解锁按钮;没见过完成哨兵就判失败 下行:一次性配置 上行:文本流 收尾 界面 · Vue 渲染进程 · Sequence participant 界面 Vue 渲染进程 主进程 · Electron main · Sequence participant 主进程 Electron main Final2x-core · Python 子进程 · Sequence participant Final2x-core Python 子进程 输出目录 · 超分结果 · Sequence participant 输出目录 超分结果 Legend 主干 回传 收尾 落盘

进程边界只有三样东西

  • • 下行是一个 base64 过的 JSON,走命令行参数
  • • 上行是 stdout 文本流,一路原样转发到界面
  • • 结束靠退出码,没有第二条控制通道

哨兵就是协议

  • • Processing------[ 12.5% 解析出进度百分比
  • • ______Skip_Image______:路径 弹一条跳过提示
  • • ______SR_COMPLETED______ 是唯一的成功判据

为什么先 base64

  • • 配置里有引号,路径里有空格,还可能有中文
  • • Windows 的 cmd 和 POSIX shell 转义规则对不上
  • • 编码之后只剩 A-Za-z0-9+/=,引号地狱直接消失

收尾要杀整棵进程树

  • • 子进程是用 shell 起的,直接杀只杀掉 shell
  • • 所以按 pid 树杀,Python 那一层才真的停
  • • 退出前先拦下 quit,等杀完再放行,避免留孤儿