javascript - 使用 worker_threads 循环遍历 300k 个项目的数组并用 jest 运行测试
问题描述
我以前从未使用过带节点的 Workers,但我必须使用 Jest 运行一系列测试,其中包含大小为 300k+ 项的大型对象数组。
我想用这个数组的子部分运行工作人员并在每个部分上运行测试。我该怎么办?
更新:我正在使用的代码
const CPUS_NUMBER_LIMIT = os.cpus().length - 2;
const splitArray = (arr: any[]) => {
return new Promise(async (parentResolve, parentReject) => {
const segmentSize = Math.ceil(arr.length / CPUS_NUMBER_LIMIT);
const segments = [];
for (let index = 0; index < CPUS_NUMBER_LIMIT; index++) {
const start = index * segmentSize;
const end = start + segmentSize;
const segment = arr.slice(start, end);
segments.push(segment);
}
// Create a worker for each segment
try {
const results = await Promise.all(
segments.map(
(seg) =>
new Promise((resolve, reject) => {
const worker = new Worker(
`require('ts-node/register');
require(require('worker_threads').workerData.runThisFileInTheWorker);`,
{
eval: true,
workerData: {
runThisFileInTheWorker: path.join(process.cwd(), "./src/common/dump/worker.ts"),
seg,
},
}
);
worker.on("message", parentResolve);
worker.on("error", reject);
worker.on("exit", (code) =>
code !== 0 ? reject(new Error("Error with code" + code)) : {}
);
})
)
);
} catch (error) {
parentReject(error);
}
});
};
解决方案
推荐阅读
- tensorflow - TensorFlow 分层对象检测
- java - 在 Android 上跨安装的数据持久性
- c++ - 从路径读取 xml
- html - 如何从文档流中提取一行
我想要文档流中的最后一个 <tr>
所以我尝试使用position: absolute;
<table> <tr> <td>1</td> <td>2</td> </tr> <tr> <
- php - 无法获取数组键名
- google-sheets - 使用 (v) 查找 2 个文档而不导入它
- scala - Spark Scala:将列转换为列表
- html - 页面的中心导航和跨度宽度
- docker - RabbitMQ 连接失败:代理无法访问 - Docker 映像
- reactjs - 如何修复 React '未定义 no-undef'?