当前位置: 首页 > 后端技术 > Node.js

Node.js多进程处理CPU密集型任务

时间:2023-04-03 12:03:31 Node.js

Node.js鍗曠嚎绋嬪杩涚▼澶у閮界煡閬揘ode.js鎬ц兘楂橈紝骞挎硾鐢ㄤ簬寮傛浜嬩欢椹卞姩鍜岄潪闃诲I/O銆備絾缂虹偣涔熷緢鏄庢樉銆傜敱浜嶯ode.js鏄崟绾跨▼绋嬪簭锛屽鏋滈暱鏃堕棿杩愯锛孋PU涓嶄細鍙婃椂閲婃斁锛屾墍浠ヤ笉閫傚悎CPU瀵嗛泦鍨嬪簲鐢ㄣ€傚綋鐒讹紝娌℃湁鍔炴硶瑙e喅杩欎釜闂銆傝櫧鐒禢ode.js涓嶆敮鎸佸绾跨▼锛屼絾鏄彲浠ュ垱寤哄涓瓙杩涚▼鏉ユ墽琛屼换鍔°€侼ode.js鎻愪緵浜嗕袱涓ā鍧楋紝child_process鍜宑luster锛屽彲浠ョ敤鏉ュ垱寤哄涓瓙杩涚▼銆傛帴涓嬫潵锛屾垜浠皢浣跨敤鍗曠嚎绋嬪杩涚▼妯℃嫙瀵绘壘澶ч噺鏂愭尝閭e鏁板垪杩涜CPU瀵嗛泦鍨嬫祴璇曘€備笅闈唬鐮佹槸姹?00娆★紝浣嶇疆涓?5鐨勬枑娉㈤偅濂戞暟锛堟柟渚挎祴璇曪紝璁剧疆浣嶇疆涓嶉渶瑕佸お闀挎垨澶煭锛夊崟绾跨▼澶勭悊浠g爜锛歴ingle.jsfunctionfibonacci(n){濡傛灉锛坣==0||n==1锛墈杩斿洖n锛泒else{杩斿洖鏂愭尝閭e鏁帮紙n-1锛?鏂愭尝閭e鏁帮紙n-2锛?}}letstartTime=Date.now();lettotalCount=500;letcompletedCount=0;letn=35;for(leti=0;i=totalCount){cluster.disconnect();瀹夋叞銆傛棩蹇楋紙鈥滒煈忦煈忦煈忦煈忦煈忦煈忦煈忦煈忦煈忦煈忦煈忊€濓級;console.info(`浠诲姟瀹屾垚锛屾椂闂达細${Date.now()-startTime}ms`);console.log("馃憦馃憦馃憦馃憦馃憦馃憦馃憦馃憦馃憦");}}}/***Generator*/function*FbGenerator(count){varn=35;for(vari=0;i{varres=fibonacci(n);//鎼滅储瀹屾垚鍚庨€氱煡涓荤嚎绋嬬粨鏉燂紝浠ヤ究涓荤嚎绋嬪彲浠ユ仮澶嶆墽琛屼换鍔″垎閰峱rocess.send(res);});鍏ュ彛浠g爜锛歝luster.js//寮曞叆涓荤嚎绋媕s锛屾墽琛屾毚闇茬殑run鏂规硶constmaster=require("./master");master.run();鎵цnodecluster.js鏌ョ湅缁撴灉锛岀粨鏋滃湪鎴戠殑鐢佃剳涓婃槸10724ms锛堜笉鍚岀殑鐢佃剳閰嶇疆浼氭湁鎵€涓嶅悓锛夈€傝繘绋嬶細500/500馃憦馃憦馃憦馃憦馃憦馃憦馃憦馃憦馃憦浠诲姟瀹屾垚锛岃€楁椂锛?0724ms鍗曠嚎绋嬪鐞嗛€熷害鐨?鍊嶅銆傝€屼笖鍦ㄤ竴瀹氭潯浠朵笅锛屽鏋滅數鑴戠殑CPU瓒冲澶氾紝杩涚▼瓒婂锛岄€熷害灏变細瓒婂揩銆傚鏋滄湁鏇村ソ鐨勮В鍐虫柟妗堟垨鍏朵粬璇█鍙互婊¤冻鎮ㄧ殑闇€姹傦紝閭e氨鏇村ソ浜嗭紝杩欎娇寰桸ode.js澶╃敓涓嶉€傚悎CPU瀵嗛泦鍨嬪簲鐢ㄧ▼搴忋€?闃呰鍘熸枃