Документация по Python

Многопроцессорная обработка в Python

В: Документация по Python

Запуск двух простых процессов

Простым примером использования нескольких процессов могут быть два процесса (рабочие), которые выполняются отдельно. В следующем примере запускаются два процесса:

  • countUp() подсчитывает 1 вверх, каждую секунду.
  • countDown() подсчитывает 1 вниз, каждую секунду.
 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()

 

Вывод следующий:

 Up:    0
Down:    3
Up:    1
Up:    2
Down:    2
Up:    3
Down:    1
Down:    0 

Использование пула и карты

 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 представляет собой класс , который управляет несколько Workers (процессы) за кулисами и позволяет Вам, программист, использование.

Pool(5) создает новый пул с 5 процессами, и pool.map работает точно так же , как карта , но она использует несколько процессов (количество определяется при создании пула).

Аналогичные результаты могут быть достигнуты с помощью map_async , apply и apply_async , которые можно найти в документации .

Еще от кодкамп
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.