请问如何用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机器上的服务即可。

------解决思路----------------------

我也是新人

不过远程的话,可以用服务器+同步\异步交互,建议是Apache+JSON

------解决思路----------------------

socket: 直接用socket. 自己定义协议: 函数名, 参数值会怎么传递, 返回值要怎么传递等.

http: 用http协议, 函数名, 参数值等可以用GET/POST的参数传递. 但你要自己把复杂些的值(字典, 列表等)序列化(pickle, json等)

python有很多web framework, 也可以用自带的httpserver

rpc: 把上面的东西都包装起来, 用起来很像直接的函数调用.

文档(https://docs.python.org/2/library/xmlrpclib.html), 里面有例子, 也可以自己搜python+模块名.

例子, 服务器端:

import xmlrpclib

from SimpleXMLRPCServer import SimpleXMLRPCServer

def is_even(n):

return n%2 == 0

server = SimpleXMLRPCServer(("localhost", 8000))

print "Listening on port 8000..."

server.register_function(is_even, "is_even")

server.serve_forever()

客户端代码: (但你得换成java的版本, 搜java+rpc)

import xmlrpclib

proxy = 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-8

import xmlrpclib

from SimpleXMLRPCServer import SimpleXMLRPCServer

from datetime import date

from math import sqrt

def is_even(n):

return n%2 == 0

server = 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 don't know how to marshal date object

server.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-8

import xmlrpclib

proxy = 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 function

print "today is: %s" % str(proxy.today())

except Exception as e:

print e

print "today in string is: %s" % proxy.mytoday()

javaweb调用python算法_请教怎么用java远程调用python? 多谢相关推荐

  1. java 调用其他构造函数_我如何在Java中调用另一个构造函数?

    是的,这是可能的: public class Foo { private int x; public Foo() { this(1); } public Foo(int x) { this.x = x ...

  2. java 调用服务器文档,JAVA远程调用服务器端方法

    JAVA远程调用服务器端方法 内容精选 换一换 Windows Server 2012 R2操作系统弹性云服务器,本地使用远程桌面连接功能连接云服务器并启用redirected drive功能时,云服 ...

  3. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  4. java python算法_用Java,Python和C ++示例解释的搜索算法

    java python算法 什么是搜索算法? (What is a Search Algorithm?) This kind of algorithm looks at the problem of ...

  5. python图像融合算法_图像融合质量评价方法的python代码实现——MS-SSIM

    图像融合质量评价方法的python代码实现--MS-SSIM 图像融合质量评价方法的python代码实现--MS-SSIM 文章目录 1 前言 2 MS-SSIM介绍 2 MS-SSIM的代码 2.1 ...

  6. python调用jsonrpc接口_微信小程序通过jsonrpc调用python服务端接口

    与python后端进行联调,后端协议为jsonrpc ,这里简单记录下jsonrpc的通用请求函数,并附带几个栗子. jsonrpc 这里以2.0进行记录 JSON-RPC是一个无状态且轻量级的RPC ...

  7. python人物抠图算法_比PS还好用!Python 20行代码批量抠图

    抠图前 vs Python自动抠图后 在日常的工作和生活中,我们经常会遇到需要抠图的场景,即便是只有一张图片需要抠,也会抠得我们不耐烦,倘若遇到许多张图片需要抠,这时候你的表情应该会很有趣. Pyth ...

  8. python算法打包成接口供其他语言调用

    这里写目录标题 1 普通python程序单机版: 1.1 pyinstaller进行打包 1.2 测试exe文件能不能用 2 python算法打包成网页版: 3 tensorflow打包 3.1 重新 ...

  9. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

最新文章

  1. 关于vue 框架与后台框架的混合使用的尝试
  2. 软件开发的核心问题是什么
  3. CentOS首次安装,网络环境配置
  4. 55. Yii import class 与 对象创建
  5. 【Hibernate教程】框架体系介绍
  6. 黑客都怎么制作外挂?C++黑客编程收集的源码集合
  7. 惠普打印机换硒鼓(墨盒)
  8. 酒店计算机系统管理实训,酒店管理信息系统实训课实践
  9. 全志 起家产品 A31S四核:昂达V819mini平板试玩
  10. 串口_波特率计算字节
  11. 制作符合期刊审图号标准的中国地图(含九段线)
  12. 数据库容灾技术之–数据容灾技术比较
  13. (Matlab)复现《改进NSGA_II算法求解考虑运输约束的柔性作业车间节能调度问题》中的交叉操作
  14. 一个VC编写的虚拟桌面软件
  15. simulink方框_simulink模型引用
  16. 网络版的知乎点赞问题~
  17. 旺店助手v1.0.30 独立版
  18. 三种方法,刷新 Android 的 MediaStore!让你保存的图片立即出现在相册里!
  19. c语言 ll1文法实验报告,C语言文法 LL(1)文法
  20. AutoDL云服务器使用(2)-虚拟环境搭建

热门文章

  1. Codeforces Round #706 (Div. 2) E. Garden of the Sun 思维构造
  2. 【BJOI2017】树的难题【点分治】【线段树】
  3. CF785E Anton and Permutation
  4. 牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案
  5. 520 钻石争霸赛 题解
  6. 树的同构模板题(法1.最小表示法+法2.树哈希)
  7. P4640-[BJWC2008]王之财宝【OGF,Lucas定理】
  8. YbtOJ#20236-[冲刺NOIP2020模拟赛Day9]红点蓝点【线段树,堆】
  9. P5952-[POI2018]水箱【最小生成树】
  10. jzoj2908,P1527-[集训队互测 2012]矩阵乘法【整体二分,二维树状数组】