rpyc (Remote Python Call)为分布式计算环境提供了优良的基础平台。 使用rpyc编写c/s结构程序,完全不用考虑老式的socket编程,现在只用编写简单的3、5行代码即可完成以前的数千行代码的功能。
以简单实例讲解:
服务端:
- # coding:utf-8
- from rpyc import Service
- from rpyc.utils.serverimport ThreadedServer
- class TestService(Service):
- # 对于服务端来说, 只有以"exposed_"打头的方法才能被客户端调用,所以要提供给客户端的方法都得加"exposed_"
- defexposed_test(self, num):
- return1+num
- sr = ThreadedServer(TestRpyc, port=9999, auto_register=False)
- sr.start()
客户端:
- # coding:utf-8
- import rpyc
- # 参数主要是host, port
- conn =rpyc.connect('localhost',9999)
- # test是服务端的那个以"exposed_"开头的方法
- cResult =conn.root.test(11)
- conn.close()
- print cResult
注:对于返回值cResult
1、如果cResult是数字或字符串的话,那么在conn.close()之后,你可以用cResult的值
2、如果cResult是其它类型的数据的话, 你conn.close()之后,cResult就为空的了(这是因为对于其它类型的返回值,服务端返回的是rpyc.netref的封装nobj, 当访问nobj时,它连接到服务端,取值,并返回给客户端,你close之后就连不到服务端了),所以最好在服务端把计算结果处理下,转换成数字或字符串(对于大字典来说,可以用json转换下,然后客户端再转过来就ok了)
地址:http://rpyc.sourceforge.net/install.html