小编Ali*_*deh的帖子

Python 多处理中的变量不会改变

我正在尝试在我的多处理代码中使用字典。问题是当我在流程中更改一个键的值时,更改只会影响该流程。显然,进程的变量参数是该变量的副本。我尝试使用 dict 方法,但它也不起作用。我的错误是什么?

import time 
from multiprocessing import Process, Manager     

def f1(list1, set1):
    list1.append(3)
    set1['func']='f1' 
    print('f1 dic',set1) 
    print('f1 list',list1) 
    while True:
        time.sleep(3)
        print('f1 dic',set1) 
        print('f1 list',list1) 

def f2(list1): 
    list1.append(4)
    settings_dic['func']='f2'
    print('f2 dic',settings_dic) 
    print('f2 list',list1) 
    while True:
        time.sleep(3)
        print('f2 dic',settings_dic) 
        print('f2 list',list1) 

if __name__ == '__main__':     
    # list1 = Manager().dict()    
    settings_dic = Manager().dict()  
    Global = Manager().Namespace()
    list1 = [1,2]
    settings_dic = { 
        'mode' : 'master', 
        'logger' : 'True',
        'func' : ''
    }       
    p_video_get = Process(target=f1, args=(list1,settings_dic,))
    p_video_get.daemon = True
    p_video_get.start() 
    p_packetTrasnmission …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-multiprocessing

0
推荐指数
1
解决办法
123
查看次数