Grundlegende Verwendung von Multiprozessen
import multiprocessing import os import time def run(): print("父进程:%s,子进程:%s" % (os.getppid(), os.getpid())) time.sleep(2) if __name__ == "__main__": p = multiprocessing.Process(target=run) p.start() p.join()
Interprozesskommunikation
Der Speicher wird nicht zwischen verschiedenen Prozessen geteilt, um den Datenaustausch zwischen zwei Prozessen zu realisieren Die folgenden Methoden
Warteschlange
import multiprocessing def f(q): q.put(11111) if __name__ == "__main__": q = multiprocessing.Queue() p = multiprocessing.Process(target=f, args=(q,)) p.start() print(q.get())
Pipe
import multiprocessing def f(conn): conn.send(1) conn.send(2) print(conn.recv()) conn.close() if __name__ == "__main__": parent_conn, child_conn = multiprocessing.Pipe() p = multiprocessing.Process(target=f, args=(child_conn,)) p.start() print(parent_conn.recv()) print(parent_conn.recv()) parent_conn.send(3) p.join()
Datenaustausch zwischen Prozessen
Manager
import multiprocessing import os def func(d, l): d[os.getpid()] = os.getpid() print(d) l.append(os.getpid()) print(l) if __name__ == "__main__": manager = multiprocessing.Manager() d = manager.dict() l = manager.list() p_list = [] for i in range(5): p = multiprocessing.Process(target=func, args=(d, l)) p.start() p_list.append(p) for p in p_list: p.join()
Prozesssperre
Wenn mehrere Prozesse auf gemeinsame Ressourcen zugreifen möchten, kann Lock Zugriffskonflikte vermeiden
import multiprocessing def f(l, i): l.acquire() print("hello world", i) l.release() if __name__ == "__main__": lock = multiprocessing.Lock() for num in range(10): p = multiprocessing.Process(target=f, args=(lock, num)) p.start()
Prozesspool
Prozesspool A Die Prozesswarteschlange wird intern verwaltet. Bei Verwendung wird ein Prozess aus dem Prozesspool abgerufen. Wenn sich kein verwendbarer Prozess im Prozesspool befindet, wartet das Programm, bis ein Prozess im Prozesspool vorhanden ist >
Das obige ist der detaillierte Inhalt vonEinführung in das Python-Lernen mit mehreren Prozessen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!