是否有可能有一个Listener server process and a Client process,其中一个使用python解释器而另一个使用pypy解释器?
conn.send()
和conn.recv()
可以很好地互操作吗?
答案 0 :(得分: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()
以下是我得到的结果:
使用PyPy 1.7时(无论哪个是服务器,哪个是客户端),报告错误IOError: bad message length
。这也反映了the report on the pypy-dev mailing list。然而,这最近修复了(它在夜间构建中工作),所以下一个版本(大概是1.8)也应该修复它。
通常,这是有效的,因为多处理模块使用Python的pickle模块,该模块在多个Python实现中都是稳定的,甚至支持PyPy。