Python: как применить функцию с одним аргументом к N аргументам параллельно (p.map не работает) - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть несколько предопределенных переменных, названных в таком формате, как AAAX, AAAY, AAAZ, BBBX, BBBY, BBBZ, CCCX, CCCY, CCCZ, которые служат ленивыми словарями, в которых я сопоставляю два значения.Я знаю, что это не лучшая практика, но, к сожалению, у меня есть ограничения по времени, из-за которых мне сейчас трудно переписать весь мой код.Все эти переменные представлены в виде (очень больших) строк или списков.

По сути, я пытаюсь применить данную функцию к AAAX, чтобы получить обновленные значения для AAAY иAAAZ.Однако, поскольку функция занимает много времени, и мне также нужно применить ее к BBBX и CCCX, я попытался запустить ее параллельно, используя такой код:

if ___name___ == '__main__':
     p = Pool (processes = 3)
     p.map (function, [AAA,BBB,CCC])

Где AAA,BBB и CCC - это строки, которые я использую вместе с global () для вызова нужных мне переменных.

Однако есть только небольшая проблема: хотя функция работает, когда я вызываю ее для AAA, BBB или CCCпо отдельности это не работает, так как я пытаюсь парализовать его с помощью pool.map, по некоторым причинам, которые выходят за рамки моего понимания.Код будет просто игнорироваться Python.

Я попытался понять, что не так, написав такой простой код:

from multiprocessing import Pool

def test(x):
print x
return x

pool = Pool (processes = 4)
pool.map(test, [1,2,3,4])

Опять консоль осталась пустой.

Если функция карты не соответствует тому, что я пытаюсь сделать, у кого-нибудь будет предложение, которое это сделало?

Заранее спасибо!

...