>백엔드 개발 >파이썬 튜토리얼 >Python 3.x에서 프로세스 간 통신을 위해 다중 처리 모듈을 사용하는 방법

Python 3.x에서 프로세스 간 통신을 위해 다중 처리 모듈을 사용하는 방법

WBOY
WBOY원래의
2023-08-01 12:39:241349검색

Python 3.x에서 프로세스 간 통신을 위해 멀티프로세싱 모듈을 사용하는 방법

컴퓨터 기술이 발전하면서 프로그래밍에서는 여러 작업을 동시에 수행해야 하는 경우가 많습니다. 멀티 코어 프로세서를 더 잘 활용하기 위해 Python의 멀티프로세싱 모듈은 동시 프로그램 생성을 위한 간단하면서도 강력한 도구 세트를 제공합니다. 멀티프로세싱 모듈을 사용하면 Python에서 여러 프로세스를 사용하여 동시에 실행하고 필요할 때 통신할 수 있습니다. 이 기사에서는 프로세스 간 통신을 위해 다중 처리 모듈을 사용하는 방법을 소개하고 해당 코드 예제를 제공합니다.

  1. 프로세스 간 통신을 위해 Queue 사용
    다중 처리 모듈은 프로세스 간에 데이터를 전달하기 위한 Queue 클래스를 제공합니다. 다음은 프로세스 간 통신을 위해 Queue를 사용하는 예입니다.
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()

위 코드에서는 Queue를 통해 큐에서 데이터를 가져와 처리하는 작업자 함수를 만들었습니다. 그런 다음 세 개의 프로세스를 만들었습니다. 각 프로세스는 작업자 기능을 실행합니다. 기본 프로세스에서는 일부 데이터를 대기열에 넣고 종료 마커를 추가합니다. 마지막으로 모든 프로세스가 끝날 때까지 기다립니다.

  1. 프로세스 간 통신을 위해 Pipe 사용
    Queue를 사용하는 것 외에도 다중 처리 모듈은 프로세스 간 양방향 파이프를 생성하기 위한 Pipe 클래스도 제공합니다. 다음은 프로세스 간 통신을 위해 Pipe를 사용하는 예입니다.
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()

위 코드에서는 Pipe를 통해 메인 프로세스에서 보낸 데이터를 받아 인쇄하는 작업자 함수를 생성합니다. 그런 다음 메시지를 다시 기본 프로세스로 보냅니다. 기본 프로세스에서는 파이프를 생성하고 포트 중 하나를 하위 프로세스에 전달합니다. 그런 다음 자식 프로세스에 메시지를 보내고 자식 프로세스로부터 반환 데이터를 받습니다. 마지막으로 하위 프로세스가 완료될 때까지 기다립니다.

요약:
프로세스 간 통신을 위해 다중 처리 모듈을 사용하는 것은 매우 간단합니다. 프로세스 간 데이터 전송을 구현하기 위해 큐와 파이프라는 두 가지 클래스를 제공합니다. Queue 클래스는 단방향 통신에 사용되며 put 및 get 메소드를 통해 프로세스 간에 데이터를 전달합니다. Pipe 클래스는 send 및 recv 메서드를 통한 프로세스 간 양방향 통신에 사용됩니다. 큐를 사용하든 파이프를 사용하든 서로 다른 프로세스 간에 데이터를 쉽게 전송할 수 있으므로 작업의 동시 실행 및 프로세스 간 통신이 가능합니다.

위 내용은 Python 3.x에서 프로세스 간 통신을 위해 다중 처리 모듈을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.