电子运行多个主要进程与多个浏览器窗口

时间:2017-03-25 18:37:02

标签: node.js electron

我在linux服务器上运行电子进行网络抓取。目前我正在为每项任务运行新的电子命令。但它导致高CPU使用率。现在考虑运行单个电子实例,并为每个任务创建新的BrowserWindow。这个样式的代码库需要一些时间,所以我想先问一下。它会对cpu的使用产生影响吗?有多少?

2 个答案:

答案 0 :(得分:1)

基本上,创建一个新的NodeJS进程将导致重新解析您的应用程序代码,这将极大地影响您的CPU使用率。仅创建新的BrowserWindow只会创建一个新的渲染器进程,这样会更有效。

如果您的申请是打包的,例如使用electron-packager,然后创建一个新实例也会影响你的CPU使用率,比如创建另一个NodeJS进程,因为打包的(也称为已编译的)应用程序中有一个NodeJS的副本,这足以运行你的代码,但仍然影响CPU使用率。

但决定取决于您如何使用服务器。如果您只运行Electron应用程序来执行您定义的任务,那么调整您的工作代码将不会带来任何好处。如果要释放此应用程序和/或某些其他任务使用该服务器,例如如果您调整代码,那么Web服务器将是一个真正的好处。

答案 1 :(得分:0)

实际不支持或测试使用默认配置运行主 nodejs 进程的多个实例。您会发现任何将数据持久化到磁盘的功能要么不起作用,要么无法按预期运行(即 localstorage、indexeddb、sessions 等)。

https://github.com/electron/electron/issues/2493

您可以通过更改每个实例的数据目录来解决此问题,这样它们就不会相互践踏,但这可能会占用大量磁盘空间,您需要一种方法来跟踪所有这些数据目录。

具有多个渲染器的单个主进程几乎总是答案。