简体   繁体   中英

How to update a dictionary in a while loop?

I am using two loops and cannot figure out how to properly update the dictionary in one loop and use it in the other loop.

In the first loop I am adding a new pair to the dictionary, but in the second loop I don't see any changes, how do I do it correctly?

import time
from multiprocessing import Process

dict_1 = {1:'1'}

def func_1():
    while True:
        dict_1.update({2:'2'})
        print('Result func_1-',dict_1)
        time.sleep(5)

def func_2():
    while True:
        print('Result func_2-',dict_1)
        time.sleep(5)

if __name__ == '__main__':
    p1 = Process(target=func_1) 
    p2 = Process(target=func_2)
    p1.start()
    p2.start()
    p1.join()
    p2.join() 

Result func_1- {1: '1', 2: '2'} Result func_2- {1: '1'}

In the first cycle I see a new pair, but I do not see it in the second cycle.

You can solve this by using multiprocessing.Manager to create a managed dictionary for your purpose this way:

import time
from multiprocessing import Process, Manager

manager = Manager()
dict_1 = manager.dict({1:'1'})

def func_1():
    while True:
        dict_1.update({2:'2'})
        print('Result func_1-',dict_1)
        time.sleep(5)

def func_2():
    while True:
        print('Result func_2-',dict_1)
        time.sleep(5)

if __name__ == '__main__':
    p1 = Process(target=func_1) 
    p2 = Process(target=func_2)
    p1.start()
    p2.start()
    p1.join()
    p2.join() 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM