⑴ java调用python,有第三方包gensim,怎么调用呢,是报错。求教....
Jython(原JPython),是一个用Java语言写的Python解释器。
在没有第三方模块的情况下,通常选择利用Jython来调用Python代码,
它是一个开源的JAR包,你可以到官网下载
一个HelloPython程序
importorg.python.util.PythonInterpreter;
publicclassHelloPython{
publicstaticvoidmain(String[]args){
PythonInterpreterinterpreter=newPythonInterpreter();
interpreter.exec("print('hello')");
}
}
什么是PythonInterpreter?它的中文意思即是“Python解释器”。我们知道Python程序都是通过解释器来执行的,我们在Java中创建一个“解释器”对象,模拟Python解释器的行为,通过exec("Python语句")直接在JVM中执行Python代码,上面代码的输出结果为:hello
在Jvm中执行Python脚本
interpreter.execfile("D:/labs/mytest/hello.py");
如上,将exec改为execfile就可以了。需要注意的是,这个.py文件不能含有第三方模块,因为这个“Python脚本”最终还是在JVM环境下执行的,如果有第三方模块将会报错:javaImportError:Nomolenamedxxx
仅在Java中调用Python编写的函数
先完成一个hello.py代码:
defhello():
return'Hello'
在Java代码中调用这个函数:
importorg.python.core.PyFunction;
importorg.python.core.PyObject;
importorg.python.util.PythonInterpreter;
publicclassHelloPython{
publicstaticvoidmain(String[]args){
PythonInterpreterinterpreter=newPythonInterpreter();
interpreter.execfile("D:/labs/hello.py");
PyFunctionpyFunction=interpreter.get("hello",PyFunction.class);//第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型
PyObjectpyObject=pyFunction.__call__();//调用函数
System.out.println(pyObject);
}
}
上面的代码执行结果为:Hello
即便只是调用一个函数,也必须先加载这个.py文件,之后再通过Jython包中所定义的类获取、调用这个函数。
如果函数需要参数,在Java中必须先将参数转化为对应的“Python类型”,例如:
__call__(newPyInteger(a),newPyInteger(b))
a,b的类型为Java中的int型,还有诸如:PyString(Stringstring)、PyList(Iterator<PyObject>iter)等。
详细可以参考官方的api文档。
包含第三方模块的情况:一个手写识别程序
这是我和舍友合作写的一个小程序,完整代码在这里:
importjava.io.*;
classPyCaller{
privatestaticfinalStringDATA_SWAP="temp.txt";
privatestaticfinalStringPY_URL=System.getProperty("user.dir")+"\test.py";
(Stringpath){
PrintWriterpw=null;
try{
pw=newPrintWriter(newFileWriter(newFile(DATA_SWAP)));
}catch(IOExceptione){
e.printStackTrace();
}
pw.print(path);
pw.close();
}
publicstaticStringreadAnswer(){
BufferedReaderbr;
Stringanswer=null;
try{
br=newBufferedReader(newFileReader(newFile(DATA_SWAP)));
answer=br.readLine();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
returnanswer;
}
publicstaticvoidexecPy(){
Processproc=null;
try{
proc=Runtime.getRuntime().exec("python"+PY_URL);
proc.waitFor();
}catch(IOExceptione){
e.printStackTrace();
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
//测试码
publicstaticvoidmain(String[]args)throwsIOException,InterruptedException{
writeImagePath("D:\labs\mytest\test.jpg");
execPy();
System.out.println(readAnswer());
}
}
实际上就是通过Java执行一个命令行指令。
⑵ Python3 写了一个简单的模拟计算器 总是报错 有知道的大神 帮忙解答下 非常感谢
#要return出去,你那下面调用后,但是值没有返回
defvalidInput(info):
vchoice=raw_input(info)
ifvchoice=='exit':
sys.exit(0)
elifnotvchoice:
print('非法输入')
returnvalidInput(info)
elifnotvchoice.isdigit():
print('请输入数字')
returnvalidInput(info)
elifvchoiceisNone:
print('vchoiceisNone')
returnvalidInput(info)
else:
returnvchoice
⑶ 是真的吗python模拟
是真的。模拟是用于Python测试的库它是真的,可以在模拟的环境进行测试。它允许用模拟对象替换被测系统的各个部分,并声明它们的使用方式。
⑷ python实现随机漫步
1、随机漫步
随机漫步:每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策决定的。可以认为是:蚂蚁在晕头转向的情况下,每次都沿随机的方向前行所经过的路径。
1.1 创建RandomWalk()类
1.2 选择方向
1.3 绘制随机漫步图
输出:
1.4 模拟多次随机漫步
1.5 给点着色
输出:
1.6 重新绘制起点和终点
输出:
1.7 隐藏坐标轴
输出:
1.8 增加点数
输出:
1.9 调整尺寸以适应屏幕
输出:
⑸ 为什么有人说 Python 的多线程是鸡肋
因为 Python 中臭名昭着的 GIL。
那么 GIL 是什么?为什么会有 GIL?多线程真的是鸡肋吗? GIL 可以去掉吗?带着这些问题,我们一起往下看,同时需要你有一点点耐心。
多线程是不是鸡肋,我们先做个实验,实验非常简单,就是将数字 “1亿” 递减,减到 0 程序就终止,这个任务如果我们使用单线程来执行,完成时间会是多少?使用多线程又会是多少?show me the code
那么把 GIL 去掉可行吗?
还真有人这么干多,但是结果令人失望,在1999年Greg Stein 和Mark Hammond 两位哥们就创建了一个去掉 GIL 的 Python 分支,在所有可变数据结构上把 GIL 替换为更为细粒度的锁。然而,做过了基准测试之后,去掉GIL的 Python 在单线程条件下执行效率将近慢了2倍。
Python之父表示:基于以上的考虑,去掉GIL没有太大的价值而不必花太多精力。
⑹ Python模拟随机游走图形效果示例
Python模拟随机游走图形效果示例
本文实例讲述了Python模拟随机游走图形效果。分享给大家供大家参考,具体如下:
在python中,可以利用数组操作来模拟随机游走。
下面是一个单一的200步随机游走的例子,从0开始,步长为1和-1,且以相等的概率出现。纯Python方式实现,使用了内建的 random 模块:
# 随机游走importmatplotlib.pyplot as pltimportrandomposition=0walk=[position]steps=200foriinrange(steps): step=1ifrandom.randint(0,1)else-1 position+=step walk.append(position)fig=plt.figure()plt.title("www.jb51.net")ax=fig.add_subplot(111)ax.plot(walk)plt.show()
第二种方式:简单的把随机步长累积起来并且可以可以使用一个数组表达式来计算。因此,我用 np.random 模块去200次硬币翻转,设置它们为1和-1,并计算累计和:
# 随机游走importmatplotlib.pyplot as pltimportnumpy as npnsteps=200draws=np.random.randint(0,2, size=nsteps)steps=np.where(draws >0,1,-1)walk=steps.cumsum()fig=plt.figure()plt.title("www.jb51.net")ax=fig.add_subplot(111)ax.plot(walk)plt.show()
一次模拟多个随机游走
# 随机游走importmatplotlib.pyplot as pltimportnumpy as npnwalks=5nsteps=200draws=np.random.randint(0,2, size=(nwalks, nsteps))# 0 or 1steps=np.where(draws >0,1,-1)walks=steps.cumsum(1)fig=plt.figure()plt.title("www.jb51.net")ax=fig.add_subplot(111)foriinrange(nwalks): ax.plot(walks[i])plt.show()
当然,还可以大胆的试验其它的分布的步长,而不是相等大小的硬币翻转。你只需要使用一个不同的随机数生成函数,如 normal 来产生相同均值和标准偏差的正态分布:steps=np.random.normal(loc=0, scale=0.25, size=(nwalks, nsteps))
⑺ python怎么改变微信的步数
这个改不了,这就是微信这个软件实际统计的步数,不允许用户自行修改。
⑻ 分享!5个好用的Python工具
1、 IDLE
IDLE直译过来就是集成开发与学习环境的意思,一般安装 Python 时也会默认安装 IDLE。每个语言都可以有自己的IDLE。它让Python的入门变得简单,对于没什么基础的人写就对了。它的主要功能包括Python shell 窗口(交互式解释器)、跨平台(Windows、Linux、UNIX、Mac OS X)、智能缩进、代码着色、自动提示、可以实现断点提示、单步执行等调试功能的基本集成调试器。
2、 Scikit-learn
scikit-learn是一个建立在Scipy基础上的用于机器学习的Python模块。其中scikit-learn是最有名的,是开源的,任何人都可以免费地使用这个库或者进行二次开发。它是一个非常强大的工具,能为库的开发提供高水平的支持和严格的管理。它也得到了很多第三方工具的支持,有丰富的功能适用于各种用例。
3、Theano
Theano是一个较老牌和稳定的机器学习python库之一,虽然目前使用的人数有所下降。但它毕竟是一个祖师级的存在,一定有它的优点所在。Theano基于Python擅长处理多维数组,属于比较底层的框架,theano起初也是为了深度学习中大规模人工神经网络算法的运算所设计,我们可利用符号化式语言定义想要的结果,支持GPU加速,非常适合深度学习Python。
4、Selenium
Selenium 是自动化的最佳工具之一。它属于 Python 测试的自动化。它在 Web 应用程序中用于自动化框架。支持多款主流浏览器,提供了功能丰富的API接口,常被用作爬虫工具。使用它可以用许多编程语言编写测试脚本,包括Java、C#、python、ruby等。还可以集成 Junit 和 TestNG 等铀工具来管理测试用例并生成报告。
5、Skulpt
Skulpt 是一个用 Javascript 实现的在线 Python 执行环境,完全依靠浏览器端模拟实现Python运行的工具。不需要任何预处理、插件或服务器端支持,只需编写python并重新载入即可。因为代码完全是在浏览器中运行的,所以不用担心服务器崩溃的问题。
关于分享!5个好用的Python工具,环球青藤小编就和大家分享到这里了,学习是永无止境的,学习一项技能更是受益终身,所以,只要肯努力学,什么时候开始都不晚。如果您还想继续了解关于python编程的学习方法及素材等内容,可以点击本站其他文章学习。
⑼ 如何用python的蒙特卡洛模拟生成新的数据
生成1~10的随机数1000个:
import random
fp = open("test", 'w');
for i in range(1, 1000):
a = random.randint(1,10)
fp.write(str(a)+"\n");
fp.close();
注意:写入文件的不会在最后写入,而是重新写文件。
⑽ Python一般可以用来干什么呢
Python实际上是一种编程语言,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。
1989年圣诞节,阿姆斯特丹,为了度过无聊的圣诞节,年轻人Guido决定开发一种新的编程语言。 Python(Boa Constrictor)的名字是因为他是Monty Python喜剧小组的粉丝。你看,技术是如此随意...