我试图弄清楚如何使用多重处理,但是以下代码有问题。运行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
答案 0 :(得分:1)
pool.map
自动将可迭代参数的每一项自动映射到该函数,因此您无需手动进行(for i in profile
)-profile
已经是您感兴趣的项目。功能描述中的相关行:
此方法将迭代器切成多个块,作为单独的任务提交给进程池。
因此,在您的情况下,您的testing
函数如下所示:
def testing(profile):
print "Hey " + str(profile["firstName"]) + "!"