国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

深入理解NodeJS 多進程和集群

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

進程和線程

“進程” 是計算機系統進行資源分配和調度的基本單位,我們可以理解為計算機每開啟一個任務就會創建至少一個進程來處理,有時會創建多個,如 Chrome 瀏覽器的選項卡,其目的是為了防止一個進程掛掉而應用停止工作,而 “線程” 是程序執行流的最小單元,NodeJS 默認是單進程、單線程的,我們將這個進程稱為主進程,也可以通過 child_process 模塊創建子進程實現多進程,我們稱這些子進程為 “工作進程”,并且歸主進程管理,進程之間默認是不能通信的,且所有子進程執行任務都是異步的。

spawn 實現多進程

1、spawn 創建子進程

在 NodeJS 中執行一個 JS 文件,如果想在這個文件中再同時(異步)執行另一個 JS 文件,可以使用 child_process 模塊中的 spawn 來實現,spawn 可以幫助我們創建一個子進程,用法如下。

// 文件:process.jsconst { spawn } = require("child_process");const path = require("path");// 創建子進程let child = spawn("node", ["sub_process.js", "--port", "3000"], {  cwd: path.join(__dirname, "test") // 指定子進程的當前工作目錄});// 出現錯誤觸發child.on("error", err => console.log(err));// 子進程退出觸發child.on("exit", () => console.log("exit"));// 子進程關閉觸發child.on("close", () => console.log("close"));// exit// close

spawn 方法可以幫助我們創建一個子進程,這個子進程就是方法的返回值,spawn 接收以下幾個參數:

command:要運行的命令; args:類型為數組,數組內第一項為文件名,后面項依次為執行文件的命令參數和值; options:選項,類型為對象,用于指定子進程的當前工作目錄和主進程、子進程的通信規則等,具體可查看 官方文檔。

error 事件在子進程出錯時觸發,exit 事件在子進程退出時觸發,close 事件在子進程關閉后觸發,在子進程任務結束后 exit 一定會觸發,close 不一定觸發。

// 文件:~test/sub_process.js// 打印子進程執行 sub_process.js 文件的參數console.log(process.argv);

通過上面代碼打印了子進程執行時的參數,但是我們發現主進程窗口并沒有打印,我們希望的是子進程的信息可以反饋給主進程,要實現通信需要在創建子進程時在第三個參數 options 中配置 stdio 屬性定義。

2、spawn 定義輸入、輸出

// 文件:process.jsconst { spawn } = require("child_process");const path = require("path");// 創建子進程let child = spawn("node", ["sub_process.js", "--port", "3000"], {  cwd: path.join(__dirname, "test") // 指定子進程的當前工作目錄  // stdin: [process.stdin, process.stdout, process.stderr]  stdio: [0, 1, 2] // 配置標準輸入、標準輸出、錯誤輸出});// C:/Program Files/nodejs/node.exe,g:/process/test/sub_process.js,--port,3000            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 南和县| 万源市| 晴隆县| 奉新县| 会东县| 宜昌市| 中卫市| 和硕县| 辉县市| 自贡市| 双江| 棋牌| 怀柔区| 莲花县| 二连浩特市| 嘉峪关市| 星座| 大荔县| 望谟县| 镇宁| 台州市| 海原县| 东丰县| 澄迈县| 景谷| 凤庆县| 获嘉县| 灌云县| 镇沅| 石景山区| 吉木萨尔县| 明光市| 岢岚县| 彝良县| 富阳市| 芦山县| 普兰县| 唐山市| 白玉县| 华宁县| 荣成市|