Saltar al contenido

Comunicación entre procesos en Python

Recuerda que en las ciencias un error suele tener diferentes soluciones, no obstante nosotros aquí te mostraremos lo más óptimo y mejor.

Solución:

los multiprocessing La biblioteca proporciona oyentes y clientes que envuelven los sockets y le permiten pasar objetos de python arbitrarios.

Su servidor podría escuchar para recibir objetos de python:

from multiprocessing.connection import Listener

address = ('localhost', 6000)     # family is deduced to be 'AF_INET'
listener = Listener(address, authkey='secret password')
conn = listener.accept()
print 'connection accepted from', listener.last_accepted
while True:
    msg = conn.recv()
    # do something with msg
    if msg == 'close':
        conn.close()
        break
listener.close()

Su cliente podría enviar comandos como objetos:

from multiprocessing.connection import Client

address = ('localhost', 6000)
conn = Client(address, authkey='secret password')
conn.send('close')
# can also send arbitrary objects:
# conn.send(['a', 2.5, None, int, sum])
conn.close()

Nah, zeromq es el camino a seguir. Delicioso, ¿no?

import argparse
import zmq

parser = argparse.ArgumentParser(description='zeromq server/client')
parser.add_argument('--bar')
args = parser.parse_args()

if args.bar:
    # client
    context = zmq.Context()
    socket = context.socket(zmq.REQ)
    socket.connect('tcp://127.0.0.1:5555')
    socket.send(args.bar)
    msg = socket.recv()
    print msg
else:
    # server
    context = zmq.Context()
    socket = context.socket(zmq.REP)
    socket.bind('tcp://127.0.0.1:5555')
    while True:
        msg = socket.recv()
        if msg == 'zeromq':
            socket.send('ah ha!')
        else:
            socket.send('...nah')

De acuerdo con mi experiencia, rpyc es, con mucho, la forma más sencilla y elegante de hacerlo.

(Sé que esta es una vieja pregunta, pero me acabo de topar con ella…)

Aquí puedes ver las reseñas y valoraciones de los usuarios

Si piensas que ha sido provechoso este artículo, agradeceríamos que lo compartas con más programadores de esta manera nos ayudas a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *