网站的布局结构,如何建立和设计公司的网站,上海做建材上什么网站好,网站实用性请问如何用java远程调用python? 谢谢#xff01;本帖最后由 blackkettle 于 2015-05-07 13:00:41 编辑比如有一台机器 A上安装了python, 另一台机器B要用java 调用A 上的python的某个函数#xff0c;输入数据在B机器上#xff0c;所有的计算在A机器完成#xff0c;结果返回…请问如何用java远程调用python? 谢谢本帖最后由 blackkettle 于 2015-05-07 13:00:41 编辑比如有一台机器 A上安装了python, 另一台机器B要用java 调用A 上的python的某个函数输入数据在B机器上所有的计算在A机器完成结果返回给B机器。请问这个怎么实现希望大侠能给一个简单的demo, 非常感谢------解决思路----------------------在A机器上搭建一个服务可以采用socket、webservice、httppost等方式提供服务在服务中接收到请求后调用python并将结果返回在B机器上开发一个终端调用A机器上的服务即可。------解决思路----------------------我也是新人不过远程的话可以用服务器同步\异步交互建议是ApacheJSON------解决思路----------------------socket: 直接用socket. 自己定义协议: 函数名, 参数值会怎么传递, 返回值要怎么传递等.http: 用http协议, 函数名, 参数值等可以用GET/POST的参数传递. 但你要自己把复杂些的值(字典, 列表等)序列化(pickle, json等)python有很多web framework, 也可以用自带的httpserverrpc: 把上面的东西都包装起来, 用起来很像直接的函数调用.文档(https://docs.python.org/2/library/xmlrpclib.html), 里面有例子, 也可以自己搜python模块名.例子, 服务器端:import xmlrpclibfrom SimpleXMLRPCServer import SimpleXMLRPCServerdef is_even(n):return n%2 0server SimpleXMLRPCServer((localhost, 8000))print Listening on port 8000...server.register_function(is_even, is_even)server.serve_forever()客户端代码: (但你得换成java的版本, 搜javarpc)import xmlrpclibproxy xmlrpclib.ServerProxy(http://localhost:8000/)print 3 is even: %s % str(proxy.is_even(3))print 100 is even: %s % str(proxy.is_even(100))------解决思路----------------------客户端没法强迫服务器端做什么(恶意入侵除外), 所以必须server主动提供一些函数, client才能调用.server提供的函数不一定要是自己实现的, 也可以是从其他模块import来的. 参见下面的例子(sqrt, date.today).下面的例子里还包括了一种情况, 需要传输的值(这儿是date object)rpc模块不知道怎么序列化, 这时需要你自己把它转变成能序列化的类型, 在另一端再转回来.服务器:# encoding: utf-8import xmlrpclibfrom SimpleXMLRPCServer import SimpleXMLRPCServerfrom datetime import datefrom math import sqrtdef is_even(n):return n%2 0server SimpleXMLRPCServer((localhost, 8000))print Listening on port 8000...server.register_function(is_even, is_even)server.register_function(sqrt, kaipingfang)# next one will not work since xmlrpclib dont know how to marshal date objectserver.register_function(date.today, today)def today_in_string():return str(date.today())server.register_function(today_in_string, mytoday)server.serve_forever()客户端:# encoding: utf-8import xmlrpclibproxy xmlrpclib.ServerProxy(http://localhost:8000/)print 3 is even: %s % str(proxy.is_even(3))print 100 is even: %s % str(proxy.is_even(100))print sqrt of 10: %s % str(proxy.kaipingfang(10))try: # the bad functionprint today is: %s % str(proxy.today())except Exception as e:print eprint today in string is: %s % proxy.mytoday()