TypeError:对于多处理池,字符串索引必须为整数

时间:2018-07-21 01:21:24

标签: python string int multiprocessing 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

1 个答案:

答案 0 :(得分:1)

pool.map自动将可迭代参数的每一项自动映射到该函数,因此您无需手动进行(for i in profile)-profile已经是您感兴趣的项目。功能描述中的相关行:

  

此方法将迭代器切成多个块,作为单独的任务提交给进程池。

因此,在您的情况下,您的testing函数如下所示:

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