这个在Windows上运行的Python 2.7脚本并没有像我期望的那样输出。
from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool
def function1():
function1List = ["11" ,'22' , '33']
return function1List
def function2(passedList):
for item in passedList:
print item
list = function1()
#print list used to verify list
if __name__ == '__main__':
pool = ThreadPool()
pool.map(function2, list)
pool.close()
pool.join()
我的期望
11
22
33
44
我实际得到的是什么
1
1
2
2
3
3
4
4
我错过了什么?
map
将每个列表的一个项目传递给function2
。
然后,在function2
中,您正在迭代该项目,获取字符串的每个字符。
这和你写的完全一样:
values = ["11" ,'22' , '33']
for value in values:
for item in value:
print item
那么,你如何解决它呢?好吧,这取决于你想要什么。
如果希望每个任务像当前一样获取单个列表项,则只需更改function2
def function2(item):
print item
如果希望每个任务都获取一个列表,则必须将调用map
的内容更改为列表列表。我不确定你想要什么列表,但你可以传递四个单元素列表:
values = [[value] for value in values]
。或一个四元素列表:
values = [values]
。或两个双元素交错列表:
values = [values[::2], values[1::2]]
。或者您想要的任何其他内容。