Heim > Backend-Entwicklung > Python-Tutorial > Einführung in das Python-Lernen mit mehreren Prozessen

Einführung in das Python-Lernen mit mehreren Prozessen

高洛峰
Freigeben: 2017-03-22 10:19:06
Original
1052 Leute haben es durchsucht

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()
Nach dem Login kopieren

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())
Nach dem Login kopieren

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()
Nach dem Login kopieren

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()
Nach dem Login kopieren

 

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()
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage