Python Language
Multiprocessing
Suche…
Zwei einfache Prozesse ausführen
Ein einfaches Beispiel für die Verwendung mehrerer Prozesse sind zwei Prozesse (Worker), die separat ausgeführt werden. Im folgenden Beispiel werden zwei Prozesse gestartet:
-
countUp()
zählt jede Sekunde 1 aufwärts. -
countDown()
zählt jede Sekunde 1countDown()
.
import multiprocessing
import time
from random import randint
def countUp():
i = 0
while i <= 3:
print('Up:\t{}'.format(i))
time.sleep(randint(1, 3)) # sleep 1, 2 or 3 seconds
i += 1
def countDown():
i = 3
while i >= 0:
print('Down:\t{}'.format(i))
time.sleep(randint(1, 3)) # sleep 1, 2 or 3 seconds
i -= 1
if __name__ == '__main__':
# Initiate the workers.
workerUp = multiprocessing.Process(target=countUp)
workerDown = multiprocessing.Process(target=countDown)
# Start the workers.
workerUp.start()
workerDown.start()
# Join the workers. This will block in the main (parent) process
# until the workers are complete.
workerUp.join()
workerDown.join()
Die Ausgabe lautet wie folgt:
Up: 0
Down: 3
Up: 1
Up: 2
Down: 2
Up: 3
Down: 1
Down: 0
Pool und Karte verwenden
from multiprocessing import Pool
def cube(x):
return x ** 3
if __name__ == "__main__":
pool = Pool(5)
result = pool.map(cube, [0, 1, 2, 3])
Pool
ist eine Klasse, die mehrere Workers
(Prozesse) hinter den Kulissen verwaltet und Sie als Programmierer verwenden kann.
Pool(5)
erstellt einen neuen Pool mit 5 Prozessen, und pool.map
funktioniert wie Map , verwendet jedoch mehrere Prozesse (die beim Erstellen des Pools definierte Menge).
Ähnliche Ergebnisse können mit map_async
, apply
und apply_async
erzielt werden, apply
in der Dokumentation zu finden sind .
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow