最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Node.js多進(jìn)程

標(biāo)簽:
Node.js

Node.js多进程
Node.js单线程模式运行的,使用事件处理并发。

exec()

使用子进程的执行命令,缓存子进程的输出。并将子进程的输出以回调函数参数的形式进行返回

process.argv()

当参数为0时

是node的文件绝对地址

当参数为1时

是该文件的绝对地址

当参数为2时

是命令第一个参数。

child_process.exec

回调函数有三个选项,error, stdout, stderr
error 为程序执行的错误,正常执行会返回一个null
stdout 为程序的正常输出
stderr 为程序错误输出

/*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('子进程已退出,退出码 '+code);        console.log('执行顺序' + count++);
    });
}
/*support.js*//*support.js*/console.log("进程 " + process.argv[2] + " 执行。" );

执行结果

PS C:\Users\mingm\Desktop\test> node master.js
子进程已退出,退出码 0执行顺序0---------------------3stdout: 进程 0 执行。stderr:
子进程已退出,退出码 0执行顺序1---------------------3stdout: 进程 1 执行。stderr:
子进程已退出,退出码 0执行顺序2---------------------3stdout: 进程 2 执行。stderr:
PS C:\Users\mingm\Desktop\test>

node.js的执行为异步执行,导致先循环3次,每次提交。
所以输出i的值全为3
由于先运行子进程,子进程执行完毕以后,触发exit事件,
执行

        console.log('子进程已退出,退出码 '+code);        console.log('执行顺序' + count++);

该两句。
接着执行

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

执行完毕。
node最大的特点是异步执行。

spawn()方法

同样也是使用指定的命令行,创建新进程。

PS C:\Users\mingm\Desktop\test> node master.jsstdout进程 0 执行。stdout进程 1 执行。

子进程退出0stdout进程 2 执行。

子进程退出0子进程退出0PS C:\Users\mingm\Desktop\test> node master.jsstdout进程 0 执行。

子进程退出0stdout进程 1 执行。stdout进程 2 执行。

子进程退出0子进程退出0PS C:\Users\mingm\Desktop\test> node master.jsstdout进程 0 执行。stdout进程 1 执行。

子进程退出0stdout进程 2 执行。

子进程退出0子进程退出0PS C:\Users\mingm\Desktop\test>

node执行异步相当魔幻
飘忽不定

/*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]);    // 绑定两个事件
    workerProcess.stdout.on('data', (data) => {        console.log('stdout' + data);
    });

    workerProcess.stderr.on('data', (data) => {        console.log('stderr', + data);
    });    // 设置退出事件
    workerProcess.on('close', (code) => {        console.log('子进程退出' + code);
    });
};
/*support.js*/console.log("进程 " + process.argv[2] + " 执行。" );

和exec()的区别在于exec()是直接回调函数,而spawn()是直接绑定事件

fork()方法

PS C:\Users\mingm\Desktop\test> node master.js
进程 0 执行。
进程 1 执行。
进程 2 执行。
子进程已经退出0
子进程已经退出0
子进程已经退出0
PS C:\Users\mingm\Desktop\test>
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('子进程已经退出' + code);
    });
}

还是喜欢fork方法。fork很方便。没有那么多的异步让人头疼。



作者:小明明___
链接:https://www.jianshu.com/p/f2f1440e3e06

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消