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