При выполнении приведенного ниже кода возникла ошибка. Проблема, похоже, в том, что map
не поддерживает функции, принимающие несколько входных данных, как и во встроенном multiprocessing
пакете python. Но во встроенном пакете есть starmap
, решающий эту проблему. Есть ли у pathos.multiprocessing
то же самое?
import pathos.multiprocessing as mp
class Bar:
def foo(self, name):
return len(str(name))
def boo(self, x, y, z):
sum = self.foo(x)
sum += self.foo(y)
sum += self.foo(z)
return sum
if __name__ == '__main__':
b = Bar()
pool = mp.ProcessingPool()
results = pool.map(b.boo, [(12, 3, 456), (8, 9, 10), ('a', 'b', 'cde')])
print(results)
TypeError: boo () отсутствуют 2 обязательных позиционных аргумента: 'y' и 'z'
Предлагаемое обновление лямбда-выражения (не сработало):
if __name__ == '__main__':
b = Bar()
pool = mp.ProcessingPool()
results = pool.map(lambda x: b.boo(*x), [(12, 3, 456), (8, 9, 10), ('a', 'b', 'cde')])
print(results)
multiprocess.pool.RemoteTraceback:
"""
Отслеживание (последний вызов последний):
Файл "C: \ Users \ yg451 \ Anaconda3 \ lib \ site-packages \ multiprocess \ pool.py", строка 121, в worker
результат = (True, func (* args, ** kwds))
Файл "C: \ Users \ yg451 \ Anaconda3 \ lib \ site-packages \ multiprocess \ pool.py", строка 44, в mapstar
список возврата (карта (* аргументы))
Файл "C: \ Users \ yg451 \ Anaconda3 \ lib \ site-packages \ pathos \ helpers \ mp_helper.py", строка 15, в
func = лямбда-аргументы: f (* аргументы)
Файл «C: / Users / yg451 / Code / foo / Machine Learning / xPype / test / scratch.py», строка 18, в
results = pool.map (лямбда x: b.boo (* x), [(12, 3, 456), (8, 9, 10), ('a', 'b', 'cde')])
NameError: имя 'b' не определено
"""
lambda x: b.boo(*x)
? - person Mad Physicist   schedule 23.01.2019...pool.map(lambda x: b.boo(*x), ...
, это не сработало, кажется, pythonmultipleprocessing
вообще не работает с лямбда-выражением - person Indominus   schedule 23.01.2019