我正在体验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()
打印方法返回无,然后调用两次
将f函数更改为
def f(name):
return name.firstname, name.lastname