我最近开始在The Grinder 3中编写一些性能测试,我注意到的第一件事就是PyCheckMate不起作用,因为它无法找到一些导入.哪些编辑器为Jython提供了最好的支持?
我有一个以下微小的Python方法,它是迄今为止性能热点(根据我的分析器,在这里花费了大约95%的执行时间)在一个更大的程序中:
def topScore(self, seq):
ret = -1e9999
logProbs = self.logProbs # save indirection
l = len(logProbs)
for i in xrange(len(seq) - l + 1):
score = 0.0
for j in xrange(l):
score += logProbs[j][seq[j + i]]
ret = max(ret, score)
return ret
Run Code Online (Sandbox Code Playgroud)
代码是在Python的Jython实现中运行,而不是CPython,如果这很重要的话. seq是一个DNA序列串,大约有1,000个元素. logProbs是一个词典列表,每个位置一个.目标是找到任何长度l(大约10-20个元素)的子序列的最大分数seq.
我意识到所有这些循环由于解释开销而效率低下,并且在静态编译/ JIT语言中会更快.但是,我不愿意切换语言.首先,我需要一个JVM语言用于我正在使用的库,这种约束我的选择.其次,我不想将此代码批量转换为较低级别的JVM语言.但是,如果有必要,我愿意用其他东西重写这个热点,虽然我不知道如何连接它或者开销是多少.
除了这种方法的单线程缓慢之外,我还无法让程序在并行化方面超过4个CPU.鉴于它几乎所有的时间都花在我发布的10行热点上,我无法弄清楚这里的瓶颈是什么.
Jython是否支持Tkinter?如果我用Python编写程序并使用Tkinter将GUI前端放在其上,那么在Jython中执行相同的程序有多难?或者是否有更好的Jython GUI解决方案?
当我尝试java -jar"jarname"它显示错误为:import Tkinter,tkFileDialog,tkMessageBox,tempfile,shutil ImportError:没有名为Tkinter的模块
我怎么能解决这个............提前谢谢..... :)
我一直在寻找将我为朋友制作的Python脚本合并到我正在尝试开发的Java应用程序中.经过一些试验和错误,我终于发现了'Jython',并使用PythonInterpreter尝试运行脚本.
但是,在尝试运行它时,我在Python脚本中收到错误.这很奇怪,因为当我尝试在Java之外运行脚本(在这种情况下是Eclipse IDE)时,脚本工作正常并完全符合我的需要(从存储在同一目录中的.docx文件中提取所有图像).
有人可以帮帮我吗?
Java的:
import org.python.core.PyException;
import org.python.util.PythonInterpreter;
public class SPImageExtractor
{
public static void main(String[] args) throws PyException
{
try
{
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
PythonInterpreter interp = new PythonInterpreter();
interp.execfile("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Image-Extractor2.py");
}
catch(Exception e)
{
System.out.println(e.toString());
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
关于Python脚本的Java错误:
回溯(最近一次调用最后一次):
文件"C:/ Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Image-Extractor2.py",第19行,在thisDir中,_ = path.split(路径. abspath(argv [0]))IndexError:索引超出范围:0回溯(最近一次调用最后一次):
文件"C:/ Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Image-Extractor2.py ",第19行,在thisDir中,_ = path.split(path.abspath(argv [0]))IndexError:index超出范围:0
蟒蛇:
from os import path, chdir, listdir, mkdir, gcwd
from sys import …Run Code Online (Sandbox Code Playgroud) 我有奇怪的问题,
当我使用Netbeans IDE时,这一行:
total_stock = {items : 0 for items in product_stock}
Run Code Online (Sandbox Code Playgroud)
导致语法错误:
语法错误:输入'for'没有可行的替代方法
但是相同的代码在终端中运行得非常好并且返回它
>> {'rom_price': 0, 'rim_price': 0, 'ram_price': 0}
Run Code Online (Sandbox Code Playgroud)
我在终端使用python 2.7+和python插件版本:0.107和Jython插件版本:2.12来源:Python for netbeans 8.0
如何解决这个问题呢??
我datetime在我的pig脚本中使用的一些Python udfs中使用.到现在为止还挺好.我在Cloudera 5.5上使用了猪12.0
但是,我也需要使用pytz或者dateutil包,它们似乎不是一个vanilla python安装的一部分.
我可以Pig在某些方面在我的udfs中使用它们吗?如果是这样,怎么样?我认为dateutil是安装在我的节点上(我不是管理员,所以我怎么能实际检查是这种情况?),但是当我输入时:
import sys
#I append the path to dateutil on my local windows machine. Is that correct?
sys.path.append('C:/Users/me/AppData/Local/Continuum/Anaconda2/lib/site-packages')
from dateutil import tz
Run Code Online (Sandbox Code Playgroud)
在我的udfs.py剧本中,我得到:
2016-08-30 09:56:06,572 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1121: Python Error. Traceback (most recent call last):
File "udfs.py", line 23, in <module>
from dateutil import tz
ImportError: No module named dateutil
Run Code Online (Sandbox Code Playgroud)
当我运行我的猪脚本.
我所有的其他python udfs(datetime例如使用)工作得很好.知道怎么解决这个问题吗?
非常感谢!
UPDATE
在用python路径玩了一下后,我现在能够 …
我正在使用以下代码.
import urllib2
#Setting proxy
myProxy = {'https':'https://proxy.example.com:8080'}
proxy = urllib2.ProxyHandler(myProxy)
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
#Access URL
auth_token = "realLy_loNg_AuTheNicaTion_toKen"
headers={"Content-Type":"application/json",
"charset": "UTF-8",
"Authorization": "Bearer %s" %auth_token}
url = "https://example.com/something"
req = urllib2.Request(url, None, headers)
reply = urllib2.urlopen(req)
print reply.getcode()
Run Code Online (Sandbox Code Playgroud)
我在nGrinder中运行上面的Jython脚本.当我使用Jython在我的系统上运行相同的脚本时,它工作正常并返回200(OK状态代码).当我在nGrinder上运行它时,我收到错误
(-1, 'SSL exception: Differences between the SSL socket behaviour of cpython vs. jython are explained on the wiki: http://wiki.python.org/jython/NewSocketModule#SSL_Support')
Run Code Online (Sandbox Code Playgroud)
任何想法为什么会这样?
编辑:我一直在尝试,问题肯定与长身份验证令牌.我觉得这可能是一些编码问题.有发布一个类似的问题在这里了.我看了它,但没有正确描述.但它可能是一个很好的参考思考.
如果解释器正在运行 pyston、jython、ironpython、pypy 等,我想从正在运行的 Python 程序内部进行测试。
想到的事情是模式匹配system.version和检查来自 的幻数imp.get_magic()但是这两者似乎都有些脆弱和笨拙。还有其他建议吗?
编辑: user2357112 再次通过。
我尝试在我安装的每个 Python 版本上运行以下代码,这区分了 Jython、Pyston 和各种 CPython。它失败的地方是 2.6 之前的 Python,以及 CPython 的 anaconda 变体。对于 anaconda 来说,这可能是正确的。
这是程序和结果。请随意注意这对哪些其他类型的 Python 有效或无效。
import platform
print(platform.python_implementation())
Run Code Online (Sandbox Code Playgroud)
和shell脚本:
for v in $(pyenv versions); do # not quite right
pyenv local $v
echo "version is $v"
python /tmp/foo.py
echo "==================="
done
Run Code Online (Sandbox Code Playgroud)
我得到了这个输出:
===================
version is 2.1.3
Traceback (most recent call last):
File "/tmp/foo.py", line 1, in ?
import platform
ImportError: No module named …Run Code Online (Sandbox Code Playgroud) 我想要的是
我想用 Python 创建一个 GUI,它允许封装 Python 代码/对象/函数的节点链接交互。以下示例是我想要实现的功能类型。
我发现了什么
另一个例子是nodeworks,但源代码不可用,至少据我所知。
用 Python 编写的 Simulink 的开源替代品,尽管从技术上讲它尚未开源。
我的具体问题
是否有任何软件包允许我创建具有此功能的界面,或者我需要使用 Jython 吗?我准备了解这是否能达到最佳结果。
The Definitive Guide to Jython 的附录 A 描述了下载 SetupTools 以与 Jython 一起使用。
https://jython.readthedocs.io/en/latest/appendixA/
这向我表明应该可以从 Maximo 的 Jython 自动化脚本中下载和使用 SetupTools(在我的例子中是 v7.6)。这本书将我们指向以下 URL 以复制将执行此操作的 Jython 脚本:
http://peak.telecommunity.com/dist/ez_setup.py
我在上面的脚本中添加一行来调用函数“use_setuptools”:
use_setuptools()
Run Code Online (Sandbox Code Playgroud)
然后我在 Maximo 应用程序上创建一个按钮并将上述脚本与按钮按下相关联,我收到以下错误:
系统消息 BMXAA7837E - 发生错误,导致 EZ_SETUP 启动点的 EZ_SETUP 脚本无法运行。urllib2.HTTPError: HTTP 错误 403: SSL is required in at line number 280
堆栈跟踪指向由“use_setuptools”调用的函数“download_setuptools”中的以下行:
src = urllib2.urlopen(url)
Run Code Online (Sandbox Code Playgroud)
这似乎是因为请求的 url,在我的情况下:
http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c11-py2.5.egg
...在到达以下网址之前重定向了几次:
请注意,该 url 使用 HTTPS 而不是 HTTP。以下说明了为什么会这样:
https://sourceforge.net/p/pypi/support-requests/300/
Maximo 包含的 jython.jar 不包含 ssl 模块,因此我们可以:
jython ×10
python ×7
java ×2
ssl ×2
anaconda ×1
apache-pig ×1
cloudera ×1
eclipse ×1
editor ×1
interpreter ×1
jvm ×1
maximo ×1
netbeans ×1
performance ×1
pypy ×1
python-2.7 ×1
pytz ×1
tkinter ×1
websphere-8 ×1