Параллельно обрабатывать функцию на разных аргументах в Python - PullRequest
0 голосов
/ 20 февраля 2019

Это мой простой код, в котором я хочу запустить printRange () параллельно:

def printRange(lrange):
    print ("First is " + str(lrange[0]) + " and last is " + str(lrange[1]))


def runInParallel():
    ranges = [[0, 10], [10, 20], [20, 30]]
    // Call printRange in parallel with each sublist of ranges given as argument

Мой вопрос отличается от этого SO вопроса , так как здесь каждый процесс жестко закодирован, начал и наконец присоединился.Я хочу запустить printRange () параллельно, скажем, с 100 другими рабочими функциями printRange ().Жесткое кодирование каждый раз неосуществимо.Как это можно сделать?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Использование многопроцессорной обработки

from multiprocessing import Pool


def print_range(lrange):
    print('First is {} and last is {}'.format(lrange[0], lrange[1]))


def run_in_parallel():
    ranges = [[0, 10], [10, 20], [20, 30]]
    pool = Pool(processes=len(ranges))
    pool.map(print_range, ranges)


if __name__ == '__main__':
    run_in_parallel()

Вывод:

First is 0 and last is 10
First is 10 and last is 20
First is 20 and last is 30
0 голосов
/ 20 февраля 2019

Как то так?

import threading

def printRange(lrange):
    print ("First is " + str(lrange[0]) + " and last is " + str(lrange[1]))

def runInParallel():
    ranges = [[0, 10], [10, 20], [20, 30]]
    for i in ranges:
        t = threading.Thread(target=printRange, args = [i])
        t.start()

runInParallel()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...