lo probé para ver:
import sys
from multiprocessing.connection import Listener, Client
address = ('localhost', 6000)
def client():
conn = Client(address, authkey='secret password')
print conn.recv_bytes()
conn.close()
def server():
listener = Listener(address, authkey='secret password')
conn = listener.accept()
print 'connection accepted from', listener.last_accepted
conn.send_bytes('hello')
conn.close()
listener.close()
if __name__ == '__main__':
if sys.argv[1] == 'client':
client()
else:
server()
Éstos son los resultados que obtuve:
- CPython 2.7 + CPython 2.7: trabajo
- PyPy 1.7 + PyPy 1.7: trabajando
- CPython 2.7 + PyPy 1.7: no funciona
- CPython 2,7 + PyPy Nightly (PyPy-c-jit-50911-94e9969b5f00-Linux64): trabajo
Al utilizar PyPy 1.7 (no importa que es el servidor y que es el cliente), se informa un error con IOError: bad message length
. Esto también refleja the report on the pypy-dev mailing list. Sin embargo, esto fue arreglado recientemente (funciona en la construcción nocturna), por lo que la próxima versión (presumiblemente 1.8) debería tenerlo arreglado también.
En general, esto funciona porque el módulo de multiprocesamiento usa el módulo pickle de Python, que es estable y se admite en múltiples implementaciones de Python, incluso PyPy.
¡Es increíble que hayas encontrado ese informe de errores! – Jonathan
¡Gracias por probar esto! – Demolishun