我正在尝试使用 multiprocessing.Pool 对字典列表进行并行处理。下面是一个例子
(请注意:这是一个玩具示例,我的实际示例将对实际字典中的值进行 CPU 密集型处理)
import multiprocessing
my_list = [{'letter': 'a'}, {'letter': 'b'}, {'letter': 'c'}]
def process_list(list_elements):
ret_list = []
for my_dict in list_elements:
ret_list.append(my_dict['letter'])
return ret_list
if __name__ == "__main__":
pool = multiprocessing.Pool()
letters = pool.map(process_list, my_list)
print letters
如果我运行上面的代码,我会收到以下错误:
Traceback (most recent call last):
File "multiprocess_fail.py", line 13, in <module>
letters = pool.map(process_list, my_list)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 250, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib/python2.7/multiprocessing/pool.py", line 554, in get
raise self._value
TypeError: string indices must be integers, not str
我不知道它指的是什么字符串索引。不应该pool.map
只是迭代中的项目my_list
(即字典)?我是否必须更改数据传递给地图函数的方式才能使其运行?