Python 3.x에서 프로세스 간 통신을 위해 멀티프로세싱 모듈을 사용하는 방법
컴퓨터 기술이 발전하면서 프로그래밍에서는 여러 작업을 동시에 수행해야 하는 경우가 많습니다. 멀티 코어 프로세서를 더 잘 활용하기 위해 Python의 멀티프로세싱 모듈은 동시 프로그램 생성을 위한 간단하면서도 강력한 도구 세트를 제공합니다. 멀티프로세싱 모듈을 사용하면 Python에서 여러 프로세스를 사용하여 동시에 실행하고 필요할 때 통신할 수 있습니다. 이 기사에서는 프로세스 간 통신을 위해 다중 처리 모듈을 사용하는 방법을 소개하고 해당 코드 예제를 제공합니다.
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를 통해 큐에서 데이터를 가져와 처리하는 작업자 함수를 만들었습니다. 그런 다음 세 개의 프로세스를 만들었습니다. 각 프로세스는 작업자 기능을 실행합니다. 기본 프로세스에서는 일부 데이터를 대기열에 넣고 종료 마커를 추가합니다. 마지막으로 모든 프로세스가 끝날 때까지 기다립니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!