TypeError:字符串索引必须是多处理器池的整数



我试图弄清楚如何使用多处理,但下面的代码有问题。当运行pool_testing()函数时,我得到一个TypeError。我尝试将pool = multiprocessing.Pool()更改为pool = multiprocessing.Pool(processes=n),但出现了相同的错误。有人能帮忙吗?

import multiprocessing  
profile = [{u'firstName': u'Karen', u'age': 20},
{u'firstName': u'Jon', u'age': 25}] 
def testing(profile):
for i in profile:
print ("Hey " + str(i["firstName"]) + "!")
def pool_testing():
pool = multiprocessing.Pool()
pool.map(testing, profile)
pool_testing()

追溯:

File "/System/.../multiprocessing/pool.py", line 567, in get
raise self._value
TypeError: string indices must be integers

pool.map自动将可迭代参数的每个项映射到函数,因此不需要手动执行(for i in profile(-profile已经是您感兴趣的项。函数描述中的相关行:

此方法将可迭代对象分割为多个块,并将其作为单独的任务提交给进程池。

因此,在您的情况下,testing函数看起来像:

def testing(profile):
print "Hey " + str(profile["firstName"]) + "!"

最新更新