我正在通过Linux主机上的Node API使用puppeteer。我的用例是创建WebGL地图的不同大小的屏幕截图。
节点脚本通过命令行参数调用,它会生成一些不同大小的屏幕截图,然后退出。
我的问题是,操纵up的程序会使Web服务器的运行速度大大降低,因为它们位于同一主机上。
如何确保木偶进程和Chrome子进程以最低/空闲进程优先级启动?
这是我的Node脚本的骨架:
const puppeteer = require('puppeteer')
const SCREENSHOT_SIZES = ...
async function run() {
const browser = await puppeteer.launch({})
for (const size of SCREENSHOT_SIZES) {
const page = await browser.newPage()
await page.setViewport({
width: size.w,
height: size.h,
})
try {
await page.goto(url, { waitUntil: 'networkidle0', timeout: 60 * 1000 })
} catch (error) {
console.error(error)
}
await page.screenshot({
path: ...
})
}
await browser.close()
}
run()
答案 0 :(得分:0)
您可以使用browser.process().pid
获得衍生的浏览器进程的pid
。然后,您可以使用os.setPriority()
为浏览器的pid
指定的进程设置调度优先级。
完整示例:
'use strict';
const os = require( 'os' );
const puppeteer = require( 'puppeteer' );
( async () =>
{
const browser = await puppeteer.launch();
os.setPriority( browser.process().pid, 15 );
const page = await browser.newPage();
await page.goto( 'https://www.example.com/' );
await browser.close();
})();