Administrador de intercambio de datos multiproceso de Python

En multiproceso, cada proceso abre espacio y los datos no se comparten. Si desea compartir sus datos en cada proceso, debe usar el Administrador

from multiprocessing import Process
from multiprocessing import Manager
from multiprocessing import Lock

def change_dic(dic,lock):
    # lock.acquire()  # 互斥锁上锁
    dic["count"] -= 1
    # print(dic)
    # lock.release() # 互斥锁解锁

if __name__ == "__main__":
    m = Manager()
    dic = m.dict({
    
    "count":100})
    lock = Lock()
    p_1 = []

    for i in range(100):
        # p = Process(target=change_dic,args=(dic,))
        p = Process(target=change_dic,args=(dic,lock))
        p.start()
        p_1.append(p)
    for p in p_1:
        p.join()

    print(dic)

Por cierto, aquí: los datos en varios subprocesos se comparten (los datos de recursos en el mismo proceso son compartidos por varios subprocesos en el proceso), por ejemplo (aquí se usa un diccionario, por ejemplo, si la variable entrante no se puede aplicar directamente):

from threading import Thread

def task(dic):
    dic["count"] -= 1
    print(dic["count"])

if __name__ == "__main__":
    dic = {
    
    "count":50}
    for i in range(50):
        t = Thread(target=task,args=(dic,))
        t.start()

Supongo que te gusta

Origin blog.csdn.net/m0_50481455/article/details/113914615
Recomendado
Clasificación