2011-12-28 2 views

ответ

10

Я попробовал его увидеть:

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() 

Вот результаты, которые я получил:

  • CPython 2,7 + CPython 2,7: работает
  • PyPy 1,7 + PyPy 1,7:
  • CPython 2.7 + PyPy 1.7: не работает
  • CPython 2.7 + PyPy Ночь (PyPy-с-JIT-50911-94e9969b5f00-linux64): работы

При использовании PyPy 1.7 (не имеет значения, что и сервер, который является клиентом), сообщается об ошибке с IOError: bad message length. Это также отражает the report on the pypy-dev mailing list. Однако это было недавно исправлено (оно работает в ночной сборке), поэтому следующая версия (предположительно 1.8) также должна быть исправлена.

В целом это работает, потому что в модуле многопроцессорности используется модуль PPython, который стабилен и поддерживается в нескольких реализациях Python, даже PyPy.

+0

Замечательно, что вы обнаружили этот отчет об ошибке! – Jonathan

+0

Благодарим вас за тестирование! – Demolishun

Смежные вопросы