IPC(프로세스 간 통신)를 사용하면 실행 중인 여러 Python 프로세스 간의 통신이 가능합니다. 명명된 파이프, dbus 서비스 및 소켓 사용과 같은 다양한 옵션을 탐색하는 것은 어려울 수 있습니다. 이 기사에서는 멀티프로세싱 라이브러리를 사용하는 더 높은 수준의 강력한 솔루션을 제시합니다.
멀티프로세싱 라이브러리는 Python에서 IPC를 구현하는 편리하고 효율적인 방법을 제공합니다. 소켓을 캡슐화하고 Python 객체를 직접 교환할 수 있는 리스너와 클라이언트를 제공합니다.
리스닝 프로세스를 생성하려면 Listener 클래스를 사용하세요.
<code class="python">from multiprocessing.connection import Listener address = ('localhost', 6000) listener = Listener(address, authkey=b'secret password') conn = listener.accept() print('connection accepted from', listener.last_accepted)</code>
리스너는 지정된 IP 주소와 포트에서 들어오는 연결을 기다립니다. 연결이 설정되면 연결 개체(conn)가 반환됩니다.
메시지를 Python 개체로 보내려면 클라이언트 클래스를 사용하세요.
<code class="python">from multiprocessing.connection import Client address = ('localhost', 6000) conn = Client(address, authkey=b'secret password') conn.send('close') conn.close()</code>
Client 클래스는 지정된 주소에 연결하고 임의의 개체를 수신 프로세스에 보낼 수 있습니다.
한 프로세스(listener.py)가 메시지를 수신하고 other(client.py)가 메시지를 보냅니다.
listener.py:
<code class="python">from multiprocessing.connection import Listener listener = Listener(('localhost', 6000), authkey=b'secret password') conn = listener.accept() message = conn.recv() if message == 'close': conn.close() listener.close() exit(0) else: conn.close() listener.close() exit(1)</code>
client.py:
<code class="python">from multiprocessing.connection import Client conn = Client(('localhost', 6000), authkey=b'secret password') conn.send('close') conn.close()</code>
listener.py를 실행한 다음 client.py를 실행하면 리스너 프로세스가 메시지를 수신하고 성공을 나타내는 반환 코드 0과 함께 종료됩니다. 유효하지 않은 메시지가 전송되면 리스너는 실패를 나타내는 0이 아닌 반환 코드와 함께 종료됩니다.
이 예는 Python에서 프로세스 간 통신을 위해 다중 처리 라이브러리를 사용하는 용이성과 유연성을 보여줍니다. 소켓에 대한 더 높은 수준의 추상화를 제공하므로 프로세스 간에 Python 객체를 원활하게 보내고 받을 수 있습니다.
위 내용은 Python의 다중 처리 라이브러리는 어떻게 프로세스 간 통신을 단순화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!