Python Language
multiprocessing
Zoeken…
Twee eenvoudige processen uitvoeren
Een eenvoudig voorbeeld van het gebruik van meerdere processen zijn twee processen (werknemers) die afzonderlijk worden uitgevoerd. In het volgende voorbeeld worden twee processen gestart:
-
countUp()
telt elke seconde 1 op. -
countDown()
telt elke seconde 1 af.
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()
De output is als volgt:
Up: 0
Down: 3
Up: 1
Up: 2
Down: 2
Up: 3
Down: 1
Down: 0
Gebruik zwembad en kaart
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
is een klasse die meerdere Workers
(processen) achter de schermen beheert en die u, de programmeur, kunt gebruiken.
Pool(5)
maakt een nieuwe pool met 5 processen en pool.map
werkt net als map, maar gebruikt meerdere processen (het bedrag dat is gedefinieerd bij het maken van de pool).
Soortgelijke resultaten kunnen worden bereikt met behulp van map_async
, apply
en apply_async
die te vinden zijn in de documentatie .
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow