ホームページ ウェブフロントエンド jsチュートリアル child_process は Node.js_node.js でマルチプロセスを実装します

child_process は Node.js_node.js でマルチプロセスを実装します

May 16, 2016 pm 04:16 PM
node.js マルチプログレス

コードをコピーします コードは次のとおりです:

var http = require('http');
関数 fib (n) {
If (n 1 を返します;
} else {
fib(n - 2) fib(n - 1);
を返します。 }
}
var server = http.createServer(function (req, res) {
var num = parseInt(req.url.substring(1), 10);
res.writeHead(200);
res.end(fib(num) "n");
});
サーバー.listen(8000);

上記の例は、フィボナッチ数列計算サービスを提供します。この計算は非常に時間がかかり、シングルスレッドであるため、同時に複数のリクエストがある場合、これは child_process によって解決できます。 fork() この質問

これは公式 Web サイトからの例です。これにより、fork() の機能をよりよく理解できます

コードをコピーします コードは次のとおりです:

var cp = require('child_process');
var n = cp.fork(__dirname '/sub.js');
n.on('メッセージ', function(m) {
console.log('親がメッセージを受け取りました:', m);
});
n.send({ hello: 'world' });

上記のコード スニペットを実行した結果:

コードをコピーします コードは次のとおりです:

親がメッセージを受け取りました: { foo: 'bar' }
CHILD がメッセージを受け取りました: { hello: 'world' }

sub.jsの内容は以下のとおりです。

コードをコピーします コードは次のとおりです:

process.on('メッセージ', function(m) {
console.log('子供がメッセージを受け取りました:', m);
});
process.send({ foo: 'bar' });

子プロセスでは、プロセス オブジェクトに send() メソッドがあり、メッセージを受信するたびにメッセージ オブジェクトをパブリッシュします

少し混乱するのは、child.send() によって送信されたメッセージは process.on() メソッドによって受信され、process.send() メソッドによって送信されたメッセージは child.on() によって受信されることです。メソッド

この例を参照すると、フィボナッチ データを提供する最初のサービスを改善して、各リクエストが処理する個別の新しいプロセスを持つようにすることができます

コードをコピーします コードは次のとおりです:

var http = require('http');
var cp = require('child_process');
var server = http.createServer(function(req, res) {
var child = cp.fork(__dirname '/fibonacci-calc.js');//各リクエストは新しい子プロセスを生成します
child.on('メッセージ', function(m) {
res.end(m.result 'n');
});
var input = parseInt(req.url.substring(1));
child.send({input : input});
});
サーバー.listen(8000);

フィボナッチ計算.js

コードをコピーします コードは次のとおりです:

関数 fib(n) {
If (n 1 を返します;
} else {
fib(n - 2) fib(n - 1);
を返します。 }
}
process.on('メッセージ', function(m) {
Process.send({result: fib(m.input)});
});

サービスを開始した後、http://localhost:8080/9 にアクセスして、9 のフィボナッチ数列の値を計算します

以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nodeのメモリ制御に関する記事 Nodeのメモリ制御に関する記事 Apr 26, 2023 pm 05:37 PM

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

Node V8 エンジンのメモリと GC の詳細な図による説明 Node V8 エンジンのメモリと GC の詳細な図による説明 Mar 29, 2023 pm 06:02 PM

この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

Node の File モジュールについて詳しく説明しましょう Node の File モジュールについて詳しく説明しましょう Apr 24, 2023 pm 05:49 PM

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

Golang関数における複数プロセス間の共有メモリの適用方法 Golang関数における複数プロセス間の共有メモリの適用方法 May 17, 2023 pm 12:52 PM

同時実行性の高いプログラミング言語である Golang の組み込みコルーチン メカニズムとマルチスレッド操作により、軽量のマルチタスクが可能になります。ただし、マルチプロセス処理シナリオでは、異なるプロセス間の通信と共有メモリがプログラム開発の重要な問題になります。この記事では、Golangで複数プロセス間で共有メモリを実現する応用方法を紹介します。 1. Golang でマルチプロセスを実装する方法 Golang では、fork、os.Process、

ノードがnpmコマンドを使用できない場合はどうすればよいですか? ノードがnpmコマンドを使用できない場合はどうすればよいですか? Feb 08, 2023 am 10:09 AM

ノードが npm コマンドを使用できない理由は、環境変数が正しく設定されていないためです。解決策は次のとおりです: 1. 「システムのプロパティ」を開きます; 2. 「環境変数」->「システム変数」を見つけて、環境を編集します。変数; 3.nodejs フォルダーの場所を見つけます; 4.「OK」をクリックします。

Nodeのイベントループについて話しましょう Nodeのイベントループについて話しましょう Apr 11, 2023 pm 07:08 PM

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

ノードのバッファーについて詳しく見る ノードのバッファーについて詳しく見る Apr 25, 2023 pm 07:49 PM

当初、JS はブラウザ側でのみ動作していたため、Unicode でエンコードされた文字列の処理は簡単でしたが、バイナリ文字列や非 Unicode エンコード文字列の処理は困難でした。バイナリは、コンピュータのビデオ/オーディオ/プログラム/ネットワーク パッケージの最低レベルのデータ形式です。

プレゼンテーション層の Node.js アプリケーションを効率的に開発する方法について説明する記事 プレゼンテーション層の Node.js アプリケーションを効率的に開発する方法について説明する記事 Apr 17, 2023 pm 07:02 PM

フロントエンド アプリケーション開発に Node.js を使用するにはどうすればよいですか?次の記事では、Node でフロントエンド アプリケーションを開発する方法 (プレゼンテーション層アプリケーションの開発を含む) を紹介します。今日私が共有したソリューションは単純なシナリオ向けであり、フロントエンド開発者がコーディング経験がなくても、Node.js に関する背景知識や専門知識を習得することなく、いくつかの単純なサーバーサイド開発タスクを完了できるようにすることを目的としています。

See all articles