使用pool.map()时的全局字典python

时间:2016-05-07 21:09:38

标签: python dictionary

def process_chunk(d):
if (d):
    d = d.split(" ")
    for value in d:
        if value not in dictionary.values():
            dictionary[len(dictionary)] = value
    print(dictionary)            
return 1

def grouper(n, iterable, padvalue=None):
     return izip_longest(*[iter(iterable)]*n, fillvalue=padvalue)




dictionary = {}
if __name__ == "__main__":

    test_data = open('testfile.txt').read() 
    test_data = test_data.split("\n")
    p = multiprocessing.Pool(4)


for chunk in grouper(2, test_data):
    results = p.map(process_chunk, chunk)

当我调用函数process_chunk(d)时,变量"字典"会变空。我想把所有结果都放到字典中: 假设我每次都得到结果:     dictionary = {0:' a',1:' b',2:' c'}     dictionary = {0:' a',1:' d'}     字典= {0:' e',1:' f'}

我想得到     dictionary = {0:' a',1:' b',2:' c',3:' d',4:& #39; e',5:' f'} 换句话说,使字典全局化。 我该如何解决?

1 个答案:

答案 0 :(得分:1)

您可以在global dictionary函数的开头添加process_chunk,但使用全局变量并不是一个好习惯。您最好将其传递给函数调用或创建一个类并将其作为私有成员。