【发布时间】:2019-10-07 17:50:29
【问题描述】:
我在使用 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()
【问题讨论】:
-
"print [None, None] ":这是正确的,你调用
def f(...两次,def f(...返回两次@ 987654324@. -
但为什么没有打印出“Joe,Smith”和“Rick,Harvard”?
-
你是不是说:
print(name....indef f(...没有出现?
标签: python object multiprocessing pool