>백엔드 개발 >파이썬 튜토리얼 >Python의 다중 처리 라이브러리는 어떻게 프로세스 간 통신을 단순화할 수 있습니까?

Python의 다중 처리 라이브러리는 어떻게 프로세스 간 통신을 단순화할 수 있습니까?

DDD
DDD원래의
2024-10-29 11:18:021025검색

How can Python's multiprocessing library simplify Interprocess Communication?

Python의 프로세스 간 통신

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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