我试图弄清楚如何使用多处理,但下面的代码有问题。当运行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"]) + "!"