← retour aux snippets

multiprocessing.Manager: dict/list partagés

Partager des structures Python gérées par un serveur manager.

python concurrency #multiprocessing#manager#ipc

objectif

Partager des structures Python gérées par un serveur manager.

code minimal

from multiprocessing import Manager
with Manager() as m:
    d = m.dict(); l = m.list()
    d["x"] = 1; l.append(2)
    print(d["x"] == 1 and list(l) == [2])  # attendu: True

utilisation

from multiprocessing import Manager
with Manager() as m:
    q = m.Queue()
    q.put("msg")
    print(q.get() == "msg")

variante(s) utile(s)

from multiprocessing import Manager
with Manager() as m:
    s = m.set([1]); s.add(2)
    print(2 in s)

notes

  • Plus simple que shared_memory pour objets Python hétérogènes.
  • Coût IPC non négligeable -> limiter la granularité des opérations.