亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

利用node.js如何創建子進程詳解

2024-05-06 16:41:19
字體:
來源:轉載
供稿:網友

前言

node本身為單進程,并使用驅動模式處理并發,為了解決單進程在多核cpu上的資源浪費,node提供了cluster和child_process模塊來創建多個子進程。

Node.js是單線程的,對于現在普遍是多處理器的機器是一種浪費,怎么能利用起來呢?于是child_process模塊出現了。child_process模塊可以在其他進程上產生、派生,并執行工作。

child_process模塊提供了一個ChildProcess的新類,它可以作為從父進程訪問子進程的表示形式。Process模塊也是ChildProcess對象。當你從父模塊訪問process時,它是父ChildProcess對象,當你從子進程訪問Process是,它是ChildProcess對象

了解一個對象無外乎事件、方法、屬性。ChildProcess也是一樣。

每個子進程總帶有三個流對象:child.stdin、child.stdout、child.stderr。他們可能會共享父進程的stdio流。

這里我們先介紹利用child_process模塊中exec、spawn、fork三個方法對子進程的操作。

建立node-childProcess文件,在其中創建node-childPro.js文件。

其中就一行代碼如下:

console.log("進程 " + process.argv[2] + " 執行。" );//換成下面的查看process.argv//console.log("進程 " + process.argv + " 執行。" );

exec()方法

在node-childProcess文件中新建node-childPro-exec.js文件,其中代碼如下:

const fs = require('fs');const child_process = require('child_process');for (var i = 0; i < 3; i++) { //這里有空格請注意。分別代表node路徑 node-childPro.js路徑 i第幾個進程。 node-childPro.js中的process.argv可以獲取這些信息值 var childProcess = child_process.exec('node node-childPro.js '+i, // 回調函數 子進程的輸出以回調函數參數的形式返回 function (error, stdout, stderr) {  if (error) {  console.log(error.stack);  console.log('Error code: ' + error.code);  console.log('Signal received: ' + error.signal);  }  console.log('stdout: ' + stdout);  console.log('stderr: ' + stderr); }); childProcess.on('exit', function (code) { console.log('子進程已退出,退出碼 ' + code); });}

終端執行代碼結果如下:

G:/node/node-childProcess> node node-childPro-exec.js子進程已退出,退出碼 0stdout: 進程 0 執行。stderr:子進程已退出,退出碼 0stdout: 進程 1 執行。stderr:子進程已退出,退出碼 0stdout: 進程 2 執行。stderr:

spawn()方法

在node-childProcess文件中新建node-childPro-spawn.js,其中代碼如下:

const fs = require('fs');const child_process = require('child_process'); for(var i=0; i<3; i++) { var childProcess = child_process.spawn('node', ['node-childPro-spawn.js', i]);   childProcess.stdout.on('data', function (data) { console.log('stdout: ' + data); });childProcess.stderr.on('data', function (data) { console.log('stderr: ' + data); }); childProcess.on('close', function (code) { console.log('子進程已退出,退出碼 '+code); });}

終端執行代碼結果如下:

G:/node/node-childProcess> node node-childPro-spawn.jsstdout: 進程 0 執行。子進程已退出,退出碼 0stdout: 進程 1 執行。stdout: 進程 2 執行。子進程已退出,退出碼 0子進程已退出,退出碼 0

fork()方法

在node-childProcess文件中新建node-childPro-fork.js,其中代碼如下:

const fs = require('fs');const child_process = require('child_process'); for(var i=0; i<3; i++) { var childProcess = child_process.fork("node-childPro.js", [i]);  childProcess.on('close', function (code) { console.log('子進程已退出,退出碼 ' + code); });}

終端執行代碼結果如下:

G:/node/node-childProcess> node node-childPro-fork.js進程 0 執行。進程 1 執行。子進程已退出,退出碼 0進程 2 執行。子進程已退出,退出碼 0子進程已退出,退出碼 0

關于exec、spawn、fork

     1.exec函數是對spawn的一種友好封裝,增加Shell命令解析,可以直接嵌入復雜的命令

     2.exec函數緩存子進程的輸出,并將子進程的輸出以回調函數參數的形式返回

     3.spawn在子線程開始執行后,就開始不斷將數據從子進程返回給主進程(應用場景如“系統監控”)

     4.spawn是不支持callback函數的,它通過流的方式發數據傳給主進程,從而實現了多進程之間的數據交換

     5.fork()是spawn()的特殊情景,用于派生Node進程。除了普通ChildProcess實例所具有的所有方法,所返回的對象還具有內建的通訊通道。

下載地址:https://gitee.com/wangFengJ/node/tree/master/node-childProcess

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产高清久久久久久| 国产狼人综合免费视频| 亚洲精品福利免费在线观看| 国产自产女人91一区在线观看| 北条麻妃一区二区在线观看| 国产精品美女在线观看| 欧美疯狂xxxx大交乱88av| 日韩成人av一区| 欧美黑人一级爽快片淫片高清| 久热99视频在线观看| 亚洲天堂av女优| 日韩av电影国产| 亚洲精品视频播放| 亚洲黄色av网站| 国产精品第100页| 国产欧美日韩精品在线观看| 国产精品777| 国产精品视频久久久久| 亚洲欧美日韩天堂一区二区| 久久伊人91精品综合网站| 欧美性xxxxxxx| 日韩电影中文字幕av| 中文字幕亚洲第一| 国产精品青青在线观看爽香蕉| 国产亚洲xxx| 中文字幕日韩在线播放| 国产91精品久久久久久| 深夜福利亚洲导航| 国产免费久久av| 97在线视频免费播放| 亚洲片在线资源| 亚洲激情视频在线播放| xx视频.9999.com| 国产日韩欧美另类| 国产日韩欧美黄色| 久久色精品视频| 欧美性生活大片免费观看网址| 欧美中文在线观看国产| 国产精品久久久久久久久久| 日本乱人伦a精品| 欧美日韩午夜激情| 91沈先生在线观看| 久久天天躁狠狠躁老女人| 亚洲国产一区二区三区在线观看| 国产精品日韩一区| 国产精品三级久久久久久电影| 国产精品一区二区三区在线播放| 久久伊人精品视频| 亚洲免费一在线| 欧美老女人在线视频| 成人h猎奇视频网站| 91精品国产高清自在线看超| 亚洲欧美日韩国产中文| 国产精品黄色av| 国产精品最新在线观看| 日韩有码视频在线| 国产精品成久久久久三级| 国产午夜精品理论片a级探花| 亚洲午夜精品久久久久久性色| 热久久99这里有精品| 亚洲韩国日本中文字幕| 国产精品一区二区久久国产| 81精品国产乱码久久久久久| 国产亚洲欧洲黄色| 欧美激情亚洲国产| 亚洲最大的网站| 国产日本欧美视频| 成人亚洲欧美一区二区三区| 亚洲热线99精品视频| 中文字幕免费精品一区高清| 国产丝袜一区二区| 欧美极品少妇全裸体| 国产精品都在这里| 成人性生交大片免费观看嘿嘿视频| 欧美日韩裸体免费视频| 久久久久久久影视| 日韩在线视频免费观看高清中文| 亚洲精品在线观看www| 国产精品一区久久久| 久久久成人av| 91久久久久久久久久久| 国产脚交av在线一区二区| 中文字幕亚洲欧美日韩高清| 欧美激情a∨在线视频播放| 色婷婷综合成人av| 久久久久久国产| 国产一区二区三区直播精品电影| 欧美影院成年免费版| 久久精品小视频| 国产免费一区二区三区在线观看| 日韩一区二区精品视频| 日韩在线观看网址| 欧美一级视频在线观看| 中文字幕亚洲激情| 亚洲一区www| 91亚洲精品一区二区| 国产一区二区三区在线观看视频| 久久精品电影网站| 日韩av影视在线| 欧美大尺度电影在线观看| 欧美激情免费观看| 亚洲成人亚洲激情| 欧美激情区在线播放| 欧美极品少妇全裸体| 亚洲无限乱码一二三四麻| 欧美激情aaaa| 欧美黑人xxxⅹ高潮交| 欧美乱大交xxxxx另类电影| 伊人久久五月天| 日韩国产精品亚洲а∨天堂免| 国产精品日日摸夜夜添夜夜av| 亚洲第一天堂av| 成人国产精品日本在线| 88xx成人精品| 亚洲第一区中文99精品| 精品久久久久久久久久ntr影视| 成人网址在线观看| 国产亚洲精品久久| 国产高清视频一区三区| 高跟丝袜一区二区三区| 欧美日韩国产成人| 色偷偷偷亚洲综合网另类| 国产精品福利小视频| 91久久国产婷婷一区二区| 久久黄色av网站| 久久久久一本一区二区青青蜜月| 日韩精品高清视频| 国产精品电影网站| 久久男人资源视频| 欧美日韩美女在线| 久操成人在线视频| 欧美精品久久久久a| 国产精品永久免费视频| 日韩国产欧美精品一区二区三区| 亚洲影视九九影院在线观看| 亚洲精品久久久久中文字幕二区| 国产精品爽爽ⅴa在线观看| 日韩免费黄色av| 亚洲精品网站在线播放gif| 77777少妇光屁股久久一区| 91免费看片网站| 自拍视频国产精品| 中文一区二区视频| 欧美亚洲另类视频| 97婷婷涩涩精品一区| 久久久久久久一区二区三区| 精品无人区太爽高潮在线播放| 精品动漫一区二区三区| 高清日韩电视剧大全免费播放在线观看| 欧美日韩亚洲精品内裤| 日韩高清电影免费观看完整版| 欧美日韩高清区| 国产精品吹潮在线观看| 国产精品久久久久久久av电影| 在线观看欧美视频| 日韩在线观看免费高清完整版| 国产精品入口免费视频一| 国产精品美女在线观看| 4k岛国日韩精品**专区| 国产精品黄页免费高清在线观看| 精品久久久久久亚洲精品| 亚洲精品国产综合区久久久久久久| 久久99精品久久久久久琪琪| 亚洲福利精品在线|