Value is not storing into Manager().dict() inside the Pool()
这是主要代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if __name__ == '__main__': manager = Manager() mylist = manager.list() mydict = manager.dict() mylist.append('abc') mylist.append('xyz') for k in mylist: mydict[k] = manager.list() pool = Pool(processes = 100) pool.map(func, arg) pool.terminate() |
这是func()的定义:
1 2 3 4 5 6 7 | for x in mylist: r = {} r['m'] = 1 r['n'] = 2 print (r) # gives correct values mydict[x].append(dict(r)) print (mydict) # gives empty list, keys are printed correct |
正如代码中的注释,它正在打印空列表,而不是预期值。如何使这个共享的dict和list正常工作?
第一次打印显示预期值。第二次打印显示预期的键,但值部分为空列表。因为它正确地显示了密钥,所以共享工作正常。附加部分有一些问题。我想不出来。
投反对票的人,在你认为我的问题和那个问题一样之前,请仔细阅读相关的问题。如果你仍然坚持他们是一样的,请留下评论,说明你为什么这么认为。从我的观点来看,这两个问题是不同的。链接问题询问如何与建议使用manager.dict()的答案共享dict。我的问题已经使用了manager.dict(),并且由于异常而失败。谢谢您。
从代码中的注释可以看出,
它可以通过创建一个新字典并在突变后将
1 2 3 4 5 6 7 8 9 | for x in mylist: r = {} r['m'] = 1 r['n'] = 2 print (r) foo = mydict[x] foo.append(dict(r)) mydict[x] = foo print (mydict) |