Python Многопроцессорность: параллельное выполнение каждой итерации нескольких циклов for. - PullRequest
1 голос
/ 18 июня 2020

У меня две петли в python. Вот какой-то псевдокод. Я хотел бы запускать обе эти функции и каждую итерацию каждой из этих функций одновременно. Итак, в этом примере одновременно будет выполняться 8 процессов. Я знаю, что вы можете использовать «Процесс», но я просто не знаю, как включить итерацию. Пожалуйста, дайте мне знать, спасибо!

import...

def example1(iteration):
    print('stuff')

def example2(iteration):
    print('stuff')

if __name__ == '__main__':  
    freeze_support()
    pool = multiprocessing.Pool(4)
    iteration = [1,2,3,4]
    pool.map(example1,iteration)

1 Ответ

1 голос
/ 18 июня 2020

Предполагая, что их не нужно запускать в одно и то же время, я думаю, что map_async - это то, что вы хотите.

В приведенном ниже примере мы можем распечатать результат example2 до завершения example1, хотя example1 был запущен первым.

import multiprocessing
import time

def example1(iteration):
    time.sleep(1)
    return 1

def example2(iteration):
    return 2

if __name__ == '__main__':
    pool = multiprocessing.Pool(4)
    iteration = [1,2,3,4]
    result1 = pool.map_async(example1, iteration)
    result2 = pool.map_async(example2, iteration)
    print(result2.get())
    print(result1.get())
...