# 平行执行

QV2QS 使用可配置的进程池并发转换多个项目。

## Worker 配置

默认情况下，QV2QS 会根据机器上的逻辑 CPU 核心数自动检测最佳 worker 数量。默认设置 (`--batchWorkers 0`) 使用比核心数少一个的 worker，为编排器进程和操作系统留出一个空闲核心。

若要使用显式计数进行覆盖，请传递 `--batchWorkers N`：

```
QV2QS.exe --batchDir "C:\Projects" --outputDir C:\Output --batchWorkers 4 --unbuildOnly
```

如果指定的 worker 数量超过可用 CPU 核心数，QV2QS 将输出警告。超出核心数后，每增加一个 worker 都会增加约 80 MB 的内存开销，而对实际运行时间的改善微乎其微。

本地转换阶段使用进程池。每个 worker 都在独立的进程中运行，从而为构成转换的 XML 解析、对象图遍历和 JSON 生成实现真正的 CPU 并行。如果一个项目失败，其余项目将继续。每个工作进程都会向项目 `logs/` 子文件夹写入单独的日志文件。

云部署使用工作线程数相同的线程池。在所有本地转换完成后，QV2QS 会将转换后的应用程序并行部署到 Qlik Cloud。在并行云部署期间，控制台输出已简化——动画旋转指示器被替换为静态进度行，以避免输出混乱。

## 错误处理

批处理模式在发生失败时仍会继续运行。如果某个项目在转换过程中失败，QV2QS 会记录该错误并继续处理其余项目。失败的项目会显示在批处理摘要中，并附有错误描述。当所有项目均成功时，批处理退出代码为 `0`；当任一项目失败时，批处理退出代码为 `1`。

错误隔离也适用于报告生成。如果项目转换成功，但 Excel 报告生成失败，该项目仍计为成功。报表错误会被单独记录。

云部署失败也以同样的方式进行隔离。如果某个项目部署失败，其余项目将继续部署。

## 了解更多

* [批量扫描的工作原理](https://help.qlik.com/zh-CN/migration/Content/Qv2qsMigration/batch-conversion/how-batch-scanning-works.htm)
* [批量报告](https://help.qlik.com/zh-CN/migration/Content/Qv2qsMigration/batch-conversion/batch-reporting.htm)
* [性能基准测试](https://help.qlik.com/zh-CN/migration/Content/Qv2qsMigration/batch-conversion/performance-benchmarks.htm)