使用Python将对象列表作为池映射参数传递

问题描述 投票:0回答:1

我正在体验Python的多处理功能,并且陷入了将对象列表作为pool.map参数传递的麻烦。以下代码打印[None,None]而不是实际名称。有人可以阐明吗?

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()
python object multiprocessing pool
1个回答
1
投票

打印方法返回无,然后调用两次

将f函数更改为

def f(name):
    return name.firstname, name.lastname
© www.soinside.com 2019 - 2024. All rights reserved.