Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie das Multiprocessing-Modul für die Kommunikation zwischen Prozessen in Python 3.x

So verwenden Sie das Multiprocessing-Modul für die Kommunikation zwischen Prozessen in Python 3.x

WBOY
WBOYOriginal
2023-08-01 12:39:241289Durchsuche

So verwenden Sie das Multiprocessing-Modul für die Kommunikation zwischen Prozessen in Python 3.x

Mit der Entwicklung der Computertechnologie müssen wir beim Programmieren oft mehrere Aufgaben gleichzeitig ausführen. Um die Vorteile von Multi-Core-Prozessoren besser nutzen zu können, bietet das Multiprocessing-Modul von Python einen einfachen, aber leistungsstarken Satz von Tools zum Erstellen gleichzeitiger Programme. Das Multiprocessing-Modul ermöglicht es uns, mehrere Prozesse in Python zu verwenden, die gleichzeitig ausgeführt werden und bei Bedarf kommunizieren können. In diesem Artikel wird die Verwendung des Multiprocessing-Moduls für die Kommunikation zwischen Prozessen vorgestellt und entsprechende Codebeispiele bereitgestellt.

  1. Verwenden von Queue für die Kommunikation zwischen Prozessen
    Das Multiprocessing-Modul stellt eine Queue-Klasse für die Weitergabe von Daten zwischen Prozessen bereit. Hier ist ein Beispiel für die Verwendung von Queue für die Kommunikation zwischen Prozessen:
from multiprocessing import Process, Queue

def worker(q):
    # 从队列中获取数据并处理
    while True:
        data = q.get()
        if data is None:
            break
        # 处理数据
        print("Worker got:", data)

if __name__ == '__main__':
    # 创建一个队列
    q = Queue()

    # 创建多个进程
    processes = []
    for i in range(3):
        p = Process(target=worker, args=(q,))
        processes.append(p)
        p.start()

    # 往队列中放入数据
    for i in range(10):
        q.put(i)

    # 添加结束标记到队列中
    for i in range(3):
        q.put(None)

    # 等待进程结束
    for p in processes:
        p.join()

Im obigen Code haben wir eine Worker-Funktion erstellt, die Daten aus der Warteschlange über Queue abruft und verarbeitet. Dann haben wir drei Prozesse erstellt. Jeder Prozess führt die Worker-Funktion aus. Im Hauptprozess stellen wir einige Daten in die Warteschlange und fügen eine Endmarkierung hinzu. Abschließend warten wir, bis alle Prozesse beendet sind.

  1. Verwenden Sie Pipe für die Kommunikation zwischen Prozessen
    Zusätzlich zur Verwendung von Queue stellt das Multiprocessing-Modul auch die Pipe-Klasse zum Erstellen bidirektionaler Pipes zwischen Prozessen bereit. Hier ist ein Beispiel für die Verwendung von Pipe für die Kommunikation zwischen Prozessen:
from multiprocessing import Process, Pipe

def worker(conn):
    # 接收数据并打印
    data = conn.recv()
    print("Worker got:", data)

    # 发送数据回主进程
    conn.send("Hello from worker")

    # 关闭连接
    conn.close()

if __name__ == '__main__':
    # 创建一个管道
    parent_conn, child_conn = Pipe()

    # 创建子进程
    p = Process(target=worker, args=(child_conn,))
    p.start()

    # 发送数据到子进程
    parent_conn.send("Hello from main process")

    # 接收子进程的返回数据
    data = parent_conn.recv()
    print("Main process got:", data)

    # 等待子进程结束
    p.join()

Im obigen Code erstellen wir eine Worker-Funktion, die die vom Hauptprozess über Pipe gesendeten Daten empfängt und ausdruckt. Anschließend sendet es eine Nachricht zurück an den Hauptprozess. Im Hauptprozess erstellen wir eine Pipe und übergeben einen der Ports an den untergeordneten Prozess. Dann senden wir eine Nachricht an den untergeordneten Prozess und erhalten die Rückgabedaten vom untergeordneten Prozess. Schließlich warten wir, bis der untergeordnete Prozess abgeschlossen ist.

Zusammenfassung:
Die Verwendung des Multiprocessing-Moduls für die Kommunikation zwischen Prozessen ist sehr einfach. Es bietet zwei Klassen, Queue und Pipe, um die Datenübertragung zwischen Prozessen zu implementieren. Die Queue-Klasse wird für die unidirektionale Kommunikation verwendet und überträgt Daten zwischen Prozessen über die Put- und Get-Methoden. Die Pipe-Klasse wird für die bidirektionale Kommunikation zwischen Prozessen über die Methoden send und recv verwendet. Unabhängig davon, ob Sie Queue oder Pipe verwenden, können wir problemlos Daten zwischen verschiedenen Prozessen übertragen, um eine gleichzeitige Ausführung von Aufgaben und Kommunikation zwischen Prozessen zu erreichen.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Multiprocessing-Modul für die Kommunikation zwischen Prozessen in Python 3.x. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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