Unable to update nested dictionary value in multiprocessing's manager.dict()

后端 未结 2 2199
日久生厌
日久生厌 2021-02-15 18:15

I am trying to update a key in a nested dictionary of multiprocessing module\'s manager.dict() but not able to do so. It doesn\'t update the value and doesn\'t throw any error t

2条回答
  •  遥遥无期
    2021-02-15 18:36

    not sure why, but the Manager DictProxy object can't seem to handle mutating a nested part. this code works:

    import time
    import random
    from multiprocessing import Pool, Manager
    
    def spammer_task(d, token, repeat):
        success = 0
        fail = 0
        while success+fail98.0:
                fail+=1
            else:
                success+=1
            d[token] = {
                'status': 'ongoing',
                'fail': fail,
                'success': success,
                'repeat': repeat,
            }
        print d[token]['status']
        foo = d[token]
        foo['status'] = 'complete'
        d[token] = foo
        return
    
    p = Pool()
    m = Manager()
    d = m.dict()
    
    p.apply_async(spammer_task(d, 'abc', 5))
    print d
    

提交回复
热议问题