当前位置: 首页 > news >正文

柳州市建设投资开发公司网站关键词免费网站

柳州市建设投资开发公司网站,关键词免费网站,交易平台网站开发教程百度云,广告图片素材什么是 Node 多进程? Node 是在单个线程中运行,我们虽然没办法开启额外的线程,但是可以开启进程集群。这样可以让下载任务和上传任务同时进行。 使用多进程进行初步代码优化 const dl require(./download.js) const ul require(./upload…

什么是 Node 多进程?

Node 是在单个线程中运行,我们虽然没办法开启额外的线程,但是可以开启进程集群。这样可以让下载任务和上传任务同时进行。

使用多进程进行初步代码优化

const dl = require('./download.js')
const ul = require('./upload.js')
const source = require('./source.js')async function runTask() {const { originUrl, targetUrl } = source.getNext()const { data } = await dl(originUrl)await ul(targetUrl, data)runTask()
}runTask()

这个代码逻辑上是没问题的,但是它只能在 1 个 CPU 核心中运行。

我们完全可以使用 Node.js 的多进程来利用 CPU 的多核心来增加这个程序的吞吐量。

怎么改造呢?

也非常简单。

const os = require('os')
const cluster = require('cluster')
const dl = require('./download.js')
const ul = require('./upload.js')
const source = require('./source.js')function run() {if(cluster.isMaster) {const numCPUs = os.cpus().length;for(let idx = 0; idx < numCPUs; idx++) {cluster.fork();}} else {runTask()}
}async function runTask() {const { originUrl, targetUrl } = source.getNext()const { data } = await dl(originUrl)await ul(targetUrl, data)runTask()}
}run()

在上面的代码中,我添加了 os 和 cluster 模块。os 模块可以告诉我们运行环境的 CPU 信息,我们可以通过它来做为创建进程数量的限制条件。然后通过 cluster.isMaster 来判断是否是主进程,因为只有主进程才拥有 fork 的能力。

worker 和 master 通信

其实上面的代码还可以继续做更深层次的优化,仔细分析一下,下载速度和上传速度其实是不一致的。通常来说,下载速度会很慢,但上传速度会很快。我们可以让其他进程去下载文件,当下载成功之后,让主进程去上传文件。
Node 中的多进程之间不会共享内存,所以我们可以通过消息传递的方式,让下载进程通知主进程去上传文件。

const os = require('os')
const cluster = require('cluster')
const dl = require('./download.js')
const ul = require('./upload.js')
const source = require('./source.js')function run() {if(cluster.isMaster) {const numCPUs = os.cpus().length;for(let idx = 0; idx < numCPUs; idx++) {const worker = cluster.fork();worker.on('message', ({ targetUrl, data }) => {ul(targetUrl, data)})}} else {runTask()}
}async function runTask() {const { originUrl, targetUrl } = source.getNext()const { data } = await dl(originUrl)process.send({ targetUrl, data })runTask()
}run()

可以在主进程中通过 worker.on(‘message’, (msg)=>{}) 的方式来监听子进程发送的消息。在子进程中通过 process.send 来向主进程发送消息。

总结

在 NodeJS 中使用多进程非常简单,合理使用多进程,可以解放硬件的能力,让软件的运行效率得到肉眼可见的提升。

http://www.hrbkazy.com/news/12512.html

相关文章:

  • 东莞南城网站建设公司营销咨询顾问
  • 网站后台bootstrap全球搜钻
  • 无忧中英繁企业网站系统通用版seo关键词排名报价
  • 本地怎样做网站网络营销现状分析
  • 求一个免费的企业邮箱seo综合查询接口
  • 深圳网站建设微信商城开发seo关键词推广优化
  • 淮南网站建设热搜词排行榜关键词
  • 推荐专业做网站公司十大禁止安装应用入口
  • 前端网站怎么做网站制作app
  • 网站建设中期报告广告平台网
  • html静态网站开发百度seo优化价格
  • 自己网站做问卷调查网络seo排名
  • 公众号制作的网站开发互动营销案例100
  • 展示型网站建设报价营销网站建站公司
  • 网站域名备案时间查询谷歌平台推广外贸
  • 嘉兴网站关键词优化网络营销推广策划案例
  • 网站建设商谷歌账号注册
  • 门户网站意义进行优化
  • 如何做旅游网站的供应商百度seo可能消失
  • 如何做app 的模板下载网站企业seo整站优化方案
  • 郑州企业网站建设陕西网络推广介绍
  • ftp网站劫持东莞网站建设公司
  • 网站规划包含哪些内容淘数据
  • 网站的佣金怎么做会计分录百度地图的精准定位功能
  • 房地产网站策划怎么开设自己的网站
  • 企业网站展示生产的处方药介绍处罚案件关键词优化是怎么弄的
  • 易居房产cms搜索引擎优化管理实验报告
  • 专业的外贸行业网站制作百度推广一年多少钱
  • 展览公司网站建设方案百度网页版电脑版
  • 做网站不赚钱手机优化软件排名