亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Node.js多進(jìn)程

sunny5541 / 1589人閱讀

摘要:多進(jìn)程單線(xiàn)程模式運(yùn)行的,使用事件處理并發(fā)。使用子進(jìn)程的執(zhí)行命令緩存子進(jìn)程的輸出。子進(jìn)程退出進(jìn)程執(zhí)行。子進(jìn)程退出子進(jìn)程退出執(zhí)行異步相當(dāng)魔幻飄忽不定綁定兩個(gè)事件設(shè)置退出事件子進(jìn)程退出進(jìn)程執(zhí)行。

Node.js多進(jìn)程
Node.js單線(xiàn)程模式運(yùn)行的,使用事件處理并發(fā)。

exec()

使用子進(jìn)程的執(zhí)行命令,緩存子進(jìn)程的輸出。并將子進(jìn)程的輸出以回調(diào)函數(shù)參數(shù)的形式進(jìn)行返回

process.argv() 當(dāng)參數(shù)為0時(shí)

是node的文件絕對(duì)地址

當(dāng)參數(shù)為1時(shí)

是該文件的絕對(duì)地址

當(dāng)參數(shù)為2時(shí)

是命令第一個(gè)參數(shù)。

child_process.exec

回調(diào)函數(shù)有三個(gè)選項(xiàng),error, stdout, stderr
error 為程序執(zhí)行的錯(cuò)誤,正常執(zhí)行會(huì)返回一個(gè)null
stdout 為程序的正常輸出
stderr 為程序錯(cuò)誤輸出

/*master.js*/
const fs = require("fs");
const child_process = require("child_process");
 
for(var i=0; i<3; i++) {
    var count = 0;
    var workerProcess = child_process.exec("node support.js " +i, function (err, std, stderr) {
        if (err) {
            console.log(err.stack);
            console.log("Error code: "+err.code);
            console.log("Signal received: "+err.signal);
        }
        console.log("---------------------");
        console.log(i);
        console.log("stdout: " + std);
        console.log("stderr: " + stderr);
    });
 
    workerProcess.on("exit", function (code) {
        console.log("子進(jìn)程已退出,退出碼 "+code);
        console.log("執(zhí)行順序" + count++);
    });
}
/*support.js*/
/*support.js*/
console.log("進(jìn)程 " + process.argv[2] + " 執(zhí)行。" );

執(zhí)行結(jié)果

PS C:UsersmingmDesktop	est> node master.js
子進(jìn)程已退出,退出碼 0
執(zhí)行順序0
---------------------
3
stdout: 進(jìn)程 0 執(zhí)行。

stderr:
子進(jìn)程已退出,退出碼 0
執(zhí)行順序1
---------------------
3
stdout: 進(jìn)程 1 執(zhí)行。

stderr:
子進(jìn)程已退出,退出碼 0
執(zhí)行順序2
---------------------
3
stdout: 進(jìn)程 2 執(zhí)行。

stderr:
PS C:UsersmingmDesktop	est>

node.js的執(zhí)行為異步執(zhí)行,導(dǎo)致先循環(huán)3次,每次提交。
所以輸出i的值全為3
由于先運(yùn)行子進(jìn)程,子進(jìn)程執(zhí)行完畢以后,觸發(fā)exit事件,
執(zhí)行

        console.log("子進(jìn)程已退出,退出碼 "+code);
        console.log("執(zhí)行順序" + count++);

該兩句。
接著執(zhí)行

        console.log("---------------------");
        console.log(i);
        console.log("stdout: " + std);
        console.log("stderr: " + stderr);

執(zhí)行完畢。
node最大的特點(diǎn)是異步執(zhí)行。

spawn()方法

同樣也是使用指定的命令行,創(chuàng)建新進(jìn)程。

PS C:UsersmingmDesktop	est> node master.js
stdout進(jìn)程 0 執(zhí)行。

stdout進(jìn)程 1 執(zhí)行。

子進(jìn)程退出0
stdout進(jìn)程 2 執(zhí)行。

子進(jìn)程退出0
子進(jìn)程退出0
PS C:UsersmingmDesktop	est> node master.js
stdout進(jìn)程 0 執(zhí)行。

子進(jìn)程退出0
stdout進(jìn)程 1 執(zhí)行。

stdout進(jìn)程 2 執(zhí)行。

子進(jìn)程退出0
子進(jìn)程退出0
PS C:UsersmingmDesktop	est> node master.js
stdout進(jìn)程 0 執(zhí)行。

stdout進(jìn)程 1 執(zhí)行。

子進(jìn)程退出0
stdout進(jìn)程 2 執(zhí)行。

子進(jìn)程退出0
子進(jìn)程退出0
PS C:UsersmingmDesktop	est>

node執(zhí)行異步相當(dāng)魔幻
飄忽不定

/*master.js*/
const fs = require("fs");
const child_process = require("child_process");

for(var i=0; i<3; i++) {
    var workerProcess = child_process.spawn("node", ["support.js", i]);

    // 綁定兩個(gè)事件
    workerProcess.stdout.on("data", (data) => {
        console.log("stdout" + data);
    });

    workerProcess.stderr.on("data", (data) => {
        console.log("stderr", + data);
    });

    // 設(shè)置退出事件
    workerProcess.on("close", (code) => {
        console.log("子進(jìn)程退出" + code);
    });
};
/*support.js*/
console.log("進(jìn)程 " + process.argv[2] + " 執(zhí)行。" );

和exec()的區(qū)別在于exec()是直接回調(diào)函數(shù),而spawn()是直接綁定事件

fork()方法
PS C:UsersmingmDesktop	est> node master.js
進(jìn)程 0 執(zhí)行。
進(jìn)程 1 執(zhí)行。
進(jìn)程 2 執(zhí)行。
子進(jìn)程已經(jīng)退出0
子進(jìn)程已經(jīng)退出0
子進(jìn)程已經(jīng)退出0
PS C:UsersmingmDesktop	est>
const fs = require("fs");
const child_process = require("child_process");

for(var i=0; i<3; i++) {
    var worker_process = child_process.fork("support.js", [i]);

    worker_process.on("close", (code) => {
        console.log("子進(jìn)程已經(jīng)退出" + code);
    });
}

還是喜歡fork方法。fork很方便。沒(méi)有那么多的異步讓人頭疼。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/96429.html

相關(guān)文章

  • 深入理解Node.js 進(jìn)程與線(xiàn)程(8000長(zhǎng)文徹底搞懂)

    摘要:在單核系統(tǒng)之上我們采用單進(jìn)程單線(xiàn)程的模式來(lái)開(kāi)發(fā)。由進(jìn)程來(lái)管理所有的子進(jìn)程,主進(jìn)程不負(fù)責(zé)具體的任務(wù)處理,主要工作是負(fù)責(zé)調(diào)度和管理。模塊與模塊總結(jié)無(wú)論是模塊還是模塊,為了解決實(shí)例單線(xiàn)程運(yùn)行,無(wú)法利用多核的問(wèn)題而出現(xiàn)的。 前言 進(jìn)程與線(xiàn)程是一個(gè)程序員的必知概念,面試經(jīng)常被問(wèn)及,但是一些文章內(nèi)容只是講講理論知識(shí),可能一些小伙伴并沒(méi)有真的理解,在實(shí)際開(kāi)發(fā)中應(yīng)用也比較少。本篇文章除了介紹概念,通過(guò)...

    Harpsichord1207 評(píng)論0 收藏0
  • 系列3|走進(jìn)Node.js進(jìn)程模型

    摘要:例如,在方法中,如果需要主從進(jìn)程之間建立管道,則通過(guò)環(huán)境變量來(lái)告知從進(jìn)程應(yīng)該綁定的相關(guān)的文件描述符,這個(gè)特殊的環(huán)境變量后面會(huì)被再次涉及到。 文:正龍(滬江網(wǎng)校Web前端工程師)本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明作者及出處 之前的文章走進(jìn)Node.js之HTTP實(shí)現(xiàn)分析中,大家已經(jīng)了解 Node.js 是如何處理 HTTP 請(qǐng)求的,在整個(gè)處理過(guò)程,它僅僅用到單進(jìn)程模型。那么如何讓 Web 應(yīng)用擴(kuò)展到...

    snowell 評(píng)論0 收藏0
  • Node.js學(xué)習(xí)之路14——Process進(jìn)程

    摘要:在中,只支持單線(xiàn)程。在這種場(chǎng)合下,如果能夠使用多進(jìn)程,則可以為每個(gè)請(qǐng)求分配一個(gè)進(jìn)程,從而可以更好地使用服務(wù)器端的資源。進(jìn)程進(jìn)程對(duì)象的屬性用于運(yùn)行應(yīng)用程序的可執(zhí)行文件的絕對(duì)路徑的版本號(hào)及其各依賴(lài)的版本號(hào)當(dāng)前運(yùn)行的平臺(tái)用于讀入標(biāo)準(zhǔn)輸入流的對(duì)象。 Process 在Node.js中,只支持單線(xiàn)程。但是在應(yīng)用程序中,如果只使用單線(xiàn)程進(jìn)行操作,從接收請(qǐng)求開(kāi)始到返回響應(yīng)為止的這段時(shí)間內(nèi)可能存在很長(zhǎng)...

    darry 評(píng)論0 收藏0
  • [gist]為什么事件驅(qū)動(dòng)服務(wù)器這么火

    摘要:兩個(gè)事件驅(qū)動(dòng)模型服務(wù)器平均每秒處理的請(qǐng)求數(shù)為服務(wù)器的一倍,而內(nèi)存降低了一半。事件驅(qū)動(dòng)模型的出現(xiàn),是為了解決傳統(tǒng)服務(wù)器與網(wǎng)絡(luò)工作負(fù)載的需求的不匹配,實(shí)現(xiàn)高度可伸縮服務(wù)器,并降低內(nèi)存開(kāi)銷(xiāo)。 from http://oyanglul.us 本文基本上這為兩篇文章的翻譯和整合 -...

    fsmStudy 評(píng)論0 收藏0
  • Node.js運(yùn)行原理、高并發(fā)性能測(cè)試對(duì)比及生態(tài)圈匯總

    摘要:模式,單實(shí)例多進(jìn)程,常用于多語(yǔ)言混編,比如等,不支持端口復(fù)用,需要自己做應(yīng)用的端口分配和負(fù)載均衡的子進(jìn)程業(yè)務(wù)代碼。就是我們需要一個(gè)調(diào)度者,保證所有后端服務(wù)器都將性能充分發(fā)揮,從而保持服務(wù)器集群的整體性能最優(yōu),這就是負(fù)載均衡。 showImg(https://segmentfault.com/img/remote/1460000019425391?w=1440&h=1080); Nod...

    kamushin233 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<