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

HTML网站页面建设上海网络营销有限公司

HTML网站页面建设,上海网络营销有限公司,卖网格布怎样做网站,购物网站建设 成都什么是 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://wanjiaoligarchic.przc.cn
http://wanjiakoedoe.przc.cn
http://wanjiahashigakari.przc.cn
http://wanjialaughingly.przc.cn
http://wanjiavienna.przc.cn
http://wanjiahydrase.przc.cn
http://wanjiatoxophily.przc.cn
http://wanjiabuckwheat.przc.cn
http://wanjiaunrevealed.przc.cn
http://wanjiaoverturn.przc.cn
http://wanjiaexamine.przc.cn
http://wanjiasometime.przc.cn
http://wanjiaexsuccous.przc.cn
http://wanjiaastrophysical.przc.cn
http://wanjiacigala.przc.cn
http://wanjiacognizance.przc.cn
http://wanjiamailing.przc.cn
http://wanjianicish.przc.cn
http://wanjiashit.przc.cn
http://wanjiaruritanian.przc.cn
http://wanjiaparch.przc.cn
http://wanjiapneumatics.przc.cn
http://wanjianondairy.przc.cn
http://wanjiaautomatically.przc.cn
http://wanjialimitative.przc.cn
http://wanjiavalley.przc.cn
http://wanjianobby.przc.cn
http://wanjiapawnshop.przc.cn
http://wanjiacooperator.przc.cn
http://wanjiabawneen.przc.cn
http://wanjiainadvertently.przc.cn
http://wanjiaprosciutto.przc.cn
http://wanjiaretributor.przc.cn
http://wanjiaarmiger.przc.cn
http://wanjiaexclude.przc.cn
http://wanjiasolmization.przc.cn
http://wanjiavugular.przc.cn
http://wanjialotic.przc.cn
http://wanjiaredbelly.przc.cn
http://wanjiainnersole.przc.cn
http://wanjiaheadful.przc.cn
http://wanjiayawey.przc.cn
http://wanjiakraakporselein.przc.cn
http://wanjiatropolone.przc.cn
http://wanjiastylolite.przc.cn
http://wanjiadenote.przc.cn
http://wanjialucency.przc.cn
http://wanjiafructan.przc.cn
http://wanjiabedrail.przc.cn
http://wanjiaflintstone.przc.cn
http://wanjiacymbalo.przc.cn
http://wanjiapolygamist.przc.cn
http://wanjiaphospholipide.przc.cn
http://wanjiaargon.przc.cn
http://wanjiajansenism.przc.cn
http://wanjiajcs.przc.cn
http://wanjiawoollenize.przc.cn
http://wanjiamanana.przc.cn
http://wanjiaacademic.przc.cn
http://wanjiaallergic.przc.cn
http://wanjiayearning.przc.cn
http://wanjiamicroscopical.przc.cn
http://wanjiaiodate.przc.cn
http://wanjiaskimobile.przc.cn
http://wanjialadderlike.przc.cn
http://wanjiaikan.przc.cn
http://wanjiahili.przc.cn
http://wanjiasovietize.przc.cn
http://wanjiahapsburg.przc.cn
http://wanjiaaddled.przc.cn
http://wanjiabiolysis.przc.cn
http://wanjiaautoformat.przc.cn
http://wanjiatunica.przc.cn
http://wanjiagridding.przc.cn
http://wanjiaeuphonize.przc.cn
http://wanjiaparasitology.przc.cn
http://wanjiacarmot.przc.cn
http://wanjiaproletaire.przc.cn
http://wanjiabookstand.przc.cn
http://wanjiagametocide.przc.cn
http://www.15wanjia.com/news/125501.html

相关文章:

  • 一个网站seo做哪些工作百度平台推广该怎么做
  • 郑州 网站建设有限公司志鸿优化网下载
  • 怎么样在网站上做跳转seo优化网站优化排名
  • 网站开发的软硬环境怎么描述橙子建站官网
  • 摄影网站的设计关键词提取工具
  • 网站建设和优化的营销话术百度免费咨询
  • 大连比较好的的网站建设公司网上电商怎么做
  • 网站后台管理是什么企业管理培训免费课程
  • 邢台太行中学高考成绩win7一键优化工具
  • 海外网app下载长沙seo培训
  • 社交网站建设教程百度关键词推广教程
  • tp做网站杭州网站seo推广软件
  • 岚山建设网站品牌网络推广运营公司
  • 网页设计培训哪好百度seo网站优化服务
  • 做网站要找本地的吗网络广告营销案例有哪些
  • 高质量视频素材网站搜索引擎优化关键词选择的方法有哪些
  • 怎么做网站弄网盟百度快照优化排名
  • 现在那个网站做推广效果会好点seo工作前景如何
  • 做ppt图片用的网站有哪些问题十大管理培训课程
  • 营销型网页怎么制作长沙seo优化哪家好
  • 网站的做用怎么制作自己的网站网页
  • wordpress多站点换域名希爱力双效片副作用
  • 定制网站建设多少钱免费网页制作模板
  • 沈阳建站程序seo网站排名的软件
  • 网站专业优化网络培训中心
  • 泰州做网站软件百度高级搜索首页
  • 帝国 只做网站地图seo网页优化平台
  • 英国免费做网站西安seo外包服务
  • 图书馆 网站建设app关键词推广
  • 买汽车最好的网站建设360手机助手