Heim Web-Frontend js-Tutorial child_process implementiert Multiprozesse in Node.js_node.js

child_process implementiert Multiprozesse in Node.js_node.js

May 16, 2016 pm 04:16 PM
node.js 多进程

Code kopieren Der Code lautet wie folgt:

var http = require('http');
Funktion fib (n) {
Wenn (n < 2) {
Rückgabe 1;
} sonst {
Rückgabe 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");
});
server.listen(8000);

Das obige Beispiel stellt einen Fibonacci-Sequenzberechnungsdienst bereit. Da diese Berechnung ziemlich zeitaufwändig ist und mehrere Anforderungen gleichzeitig vorliegen, kann dies durch child_process gelöst werden. fork() Diese Frage

Hier ist ein Beispiel von der offiziellen Website, anhand dessen Sie die Funktion von fork() besser verstehen können

Code kopieren Der Code lautet wie folgt:

var cp = require('child_process');
var n = cp.fork(__dirname '/sub.js');
n.on('message', function(m) {
console.log('PARENT got message:', m);
});
n.send({ hello: 'world' });

Das Ergebnis der Ausführung des obigen Codeausschnitts:

Code kopieren Der Code lautet wie folgt:

PARENT hat die Nachricht erhalten: { foo: 'bar' }
KIND hat die Nachricht erhalten: { hello: 'world' }

Der Inhalt von sub.js ist wie folgt:

Code kopieren Der Code lautet wie folgt:

process.on('message', function(m) {
console.log('CHILD got message:', m);
});
Process.send({ foo: 'bar' });

Im untergeordneten Prozess verfügt das Prozessobjekt über eine send()-Methode und veröffentlicht jedes Mal ein Nachrichtenobjekt, wenn es eine Nachricht empfängt

Was etwas verwirrend ist: Die von child.send() gesendete Nachricht wird von der Methodeprocess.on() empfangen, und die von der Methodeprocess.send() gesendete Nachricht wird von child.on() empfangen Methode

Anhand dieses Beispiels können wir den ersten Dienst verbessern, der Fibonacci-Daten bereitstellt, sodass für jede Anfrage ein separater neuer Prozess zu verarbeiten ist

Code kopieren Der Code lautet wie folgt:

var http = require('http');
var cp = require('child_process');
var server = http.createServer(function(req, res) {
var child = cp.fork(__dirname '/fibonacci-calc.js');//Jede Anfrage generiert einen neuen untergeordneten Prozess
child.on('message', function(m) {
          res.end(m.result 'n');
});
var input = parseInt(req.url.substring(1));
child.send({input : input});
});
server.listen(8000);

fibonacci-calc.js

Code kopieren Der Code lautet wie folgt:

Funktion fib(n) {
Wenn (n < 2) {
Rückgabe 1;
} sonst {
Rückgabe fib(n - 2) fib(n - 1);
}
}
process.on('message', function(m) {
Process.send({result: fib(m.input)});
});

Besuchen Sie nach dem Starten des Dienstes http://localhost:8080/9, um den Wert der Fibonacci-Folge von 9

zu berechnen

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ein Artikel über Speichersteuerung in Node Ein Artikel über Speichersteuerung in Node Apr 26, 2023 pm 05:37 PM

Der nicht blockierende und ereignisgesteuerte Knotendienst hat den Vorteil eines geringen Speicherverbrauchs und eignet sich sehr gut für die Verarbeitung massiver Netzwerkanforderungen. Unter der Voraussetzung massiver Anfragen müssen Probleme im Zusammenhang mit der „Speicherkontrolle“ berücksichtigt werden. 1. Der Garbage-Collection-Mechanismus und die Speicherbeschränkungen von V8 Js wird von der Garbage-Collection-Maschine gesteuert

Detaillierte grafische Erläuterung des Speichers und des GC der Node V8-Engine Detaillierte grafische Erläuterung des Speichers und des GC der Node V8-Engine Mar 29, 2023 pm 06:02 PM

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Speichers und Garbage Collectors (GC) der NodeJS V8-Engine. Ich hoffe, er wird Ihnen hilfreich sein!

Lassen Sie uns ausführlich über das File-Modul in Node sprechen Lassen Sie uns ausführlich über das File-Modul in Node sprechen Apr 24, 2023 pm 05:49 PM

Das Dateimodul ist eine Kapselung der zugrunde liegenden Dateioperationen, wie z. B. Lesen/Schreiben/Öffnen/Schließen/Löschen von Dateien, Hinzufügen usw. Das größte Merkmal des Dateimoduls besteht darin, dass alle Methoden zwei Versionen von **synchronem** und **bereitstellen. asynchron**, mit Methoden mit dem Suffix sync sind alle Synchronisationsmethoden, und diejenigen ohne sind alle heterogene Methoden.

Was soll ich tun, wenn der Knoten den Befehl npm nicht verwenden kann? Was soll ich tun, wenn der Knoten den Befehl npm nicht verwenden kann? Feb 08, 2023 am 10:09 AM

Der Grund, warum der Knoten den Befehl npm nicht verwenden kann, liegt darin, dass die Umgebungsvariablen nicht richtig konfiguriert sind. Die Lösung ist: 1. Öffnen Sie „Systemeigenschaften“ 2. Suchen Sie nach „Umgebungsvariablen“ -> „Systemvariablen“ und bearbeiten Sie dann die Umgebung Variablen; 3. Suchen Sie den Speicherort des NodeJS-Ordners. 4. Klicken Sie auf „OK“.

Anwendungsmethode des gemeinsam genutzten Speichers zwischen mehreren Prozessen in der Golang-Funktion Anwendungsmethode des gemeinsam genutzten Speichers zwischen mehreren Prozessen in der Golang-Funktion May 17, 2023 pm 12:52 PM

Als hochgradig gleichzeitige Programmiersprache ermöglichen der integrierte Coroutine-Mechanismus und die Multithread-Operationen von Golang ein leichtes Multitasking. In einem Multiprozess-Verarbeitungsszenario sind jedoch die Kommunikation und der gemeinsame Speicher zwischen verschiedenen Prozessen zu Schlüsselthemen bei der Programmentwicklung geworden. In diesem Artikel wird die Anwendungsmethode zur Realisierung des gemeinsamen Speichers zwischen mehreren Prozessen in Golang vorgestellt. 1. So implementieren Sie Multiprozesse in Golang In Golang kann die gleichzeitige Verarbeitung mehrerer Prozesse auf verschiedene Arten implementiert werden, einschließlich Fork, os.Process,

Lassen Sie uns über die Ereignisschleife in Node sprechen Lassen Sie uns über die Ereignisschleife in Node sprechen Apr 11, 2023 pm 07:08 PM

Die Ereignisschleife ist ein grundlegender Bestandteil von Node.js und ermöglicht die asynchrone Programmierung, indem sie sicherstellt, dass der Hauptthread nicht blockiert wird. Das Verständnis der Ereignisschleife ist für die Erstellung effizienter Anwendungen von entscheidender Bedeutung. Der folgende Artikel wird Ihnen ein detailliertes Verständnis der Ereignisschleife in Node vermitteln. Ich hoffe, er wird Ihnen hilfreich sein!

Erfahren Sie mehr über Puffer in Node Erfahren Sie mehr über Puffer in Node Apr 25, 2023 pm 07:49 PM

Zu Beginn lief JS nur auf der Browserseite. Es war einfach, Unicode-codierte Zeichenfolgen zu verarbeiten, aber es war schwierig, binäre und nicht Unicode-codierte Zeichenfolgen zu verarbeiten. Und Binär ist das Datenformat der niedrigsten Ebene des Computer-, Video-/Audio-/Programm-/Netzwerkpakets

Ein Artikel über die effiziente Entwicklung von Node.js-Anwendungen auf der Präsentationsebene Ein Artikel über die effiziente Entwicklung von Node.js-Anwendungen auf der Präsentationsebene Apr 17, 2023 pm 07:02 PM

Wie verwende ich Node.js für die Entwicklung von Front-End-Anwendungen? Der folgende Artikel führt Sie in die Methode zur Entwicklung von Front-End-Anwendungen in Node ein, die die Entwicklung von Anwendungen auf der Präsentationsebene umfasst. Die Lösung, die ich heute geteilt habe, ist für einfache Szenarien gedacht. Sie soll es Front-End-Entwicklern ermöglichen, einige einfache serverseitige Entwicklungsaufgaben zu erledigen, ohne zu viel Hintergrundwissen und Fachwissen über Node.js beherrschen zu müssen, selbst wenn sie über keine Programmierkenntnisse verfügen Erfahrung.

See all articles