использовать Python для передачи списка объектов в качестве аргументов карты пула - PullRequest
1 голос
/ 07 октября 2019

Я столкнулся с многопроцессорностью Python и застрял при передаче списка объектов в качестве аргументов pool.map. Следующие коды печатают [Нет, Нет] вместо реальных имен. Кто-нибудь может пролить свет на это?

from multiprocessing import Pool

class Item:
  def __init__(self, firstname, lastname):
    self.firstname = firstname
    self.lastname = lastname

def get_items():
  items = []
  names = ['Joe Smith', 'Rick Harvard']

  for name in names:
      item = Item(name.split(' ')[0], name.split(' ')[1])
      items.append(item)

  return items

def f(name):
    print(name.firstname, name.lastname)
    
if __name__ == '__main__':
  p = Pool(16)
  print(p.map(f, get_items()))
  p.close()
  p.join()

1 Ответ

1 голос
/ 07 октября 2019

Метод print возвращает None, и вы вызываете его дважды

измените свою функцию f на

def f(name):
    return name.firstname, name.lastname
...