Können wir führen Sie multi-Prozess - - Programm in docker?
Habe ich einige code mit multi-Prozess wie diesem:
import multiprocessing
from multiprocessing import Pool
pool = Pool(processes=100)
result = []
for job in job_list:
result.append(
pool.apply_async(
handle_job, (job)
)
)
pool.close()
pool.join()
Dieses Programm tut, schwere Berechnungen auf sehr großen Datensatz. Wir müssen also die multi-Prozess um den job zu behandeln, die gleichzeitig die performance zu verbessern.
Mir wurde gesagt, dass der hosting-system, ein docker-container ist nur ein Prozess. Also ich Frage mich, wie meine multi-Prozess bearbeitet werden, werden im Andockfenster?
Unten sind mein Anliegen:
-
Da der container ist nur ein Prozess, wird mein multi-Prozess-code werden multi-threading in den Prozess?
-
Wird die Leistung werden nach unten? Denn der Grund, warum ich multi-Prozess zu bekommen Arbeit getan gleichzeitig um bessere Leistung zu erhalten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Docker enthält Namespaces Prozess-id ' s und die volle Unterstützung für die Ausführung mehrerer Prozesse, die durch den kernel. Innerhalb eines Containers können Sie ps, um zu sehen, der isolierte Prozess-Liste (die oft nur Ihre Schale und den ps-Befehl).
Die Beschreibung von docker für eine einzige Anwendung ausführt, ist die Trennung der application isolation-Technologie aus bekannten OS-Virtualisierung-tools gibt, wo würden Sie starten Sie den web-server, mail-server, ssh-daemon etc in den hintergrund.
Ein paar Worte der Vorsicht:
tini
Anwendung, die Sie ausführen können, als Ihre entrypoint zu bereinigen, wenn dies ein Problem ist (tini github repo).docker run -it --rm busybox /bin/sh -c top
um dies in Aktion zu sehen.Ja sehen, der doc über supervisor
https://docs.docker.com/engine/admin/using_supervisord/
Können Sie auch die Nutzung von daemon tools
http://cr.yp.to/daemontools.html
oder s6
http://skarnet.org/software/s6/
Yes, applications running in the containers will scale to make use of CPU cores as if they were running outside of a container.
docker run
wie viele Cpus können Sie Ihre docker-container zu verwenden, extrahieren Sie aus dem doc - docs.docker.com/engine/reference/run--cpuset-cpus="" CPUs in which to allow execution (0-3, 0,1)