我试图通过在python列表中保存结果字符串(java确实System.out.println)来加速我从python调用java jar的方式。它曾经用java写入directl到一个文件,但是我发现每次打开和关闭文件非常慢,所以试图加快速度。
我目前有:
subprocess.call(
['java', '-jar', 'TensionTwoSlices.jar', '-runtype', '"groundtruth"', '-inputwindow', inputwindow, '-outputwindow', groundtruth,
'-inputfile', '"not.txt"', '-key', '"C"'],stdout=subprocess.PIPE, stderr=subprocess.PIPE);
我读了here我可以使用STDOUT,所以我尝试了:
p = subprocess.Popen(
['java', '-jar', 'TensionTwoSlices.jar', '-runtype', '"groundtruth"', '-inputwindow', inputwindow, '-outputwindow', groundtruth,
'-inputfile', '"not.txt"', '-key', '"C"'],stdout=subprocess.STDOUT, stderr=subprocess.PIPE);
print p.STDOUT;
但我得到了:
Traceback (most recent call last):
File "extract_tension.py", line 65, in <module>
'-inputfile', '"not.txt"', '-key', '"C"'],stdout=subprocess.STDOUT, stderr=subprocess.PIPE);
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 9] Bad file descriptor
由于我不再写文件,我相信我可以从电话切换到Popen。
但是,由于速度非常重要(运行数百万次),所以没有任何内容写入终端是至关重要的。
将System.out.println从java传递到python列表的最快方法是什么?
答案 0 :(得分:0)
尝试 -
output = subprocess.check_output(
['java', '-jar', 'TensionTwoSlices.jar', '-runtype',
'"groundtruth"', '-inputwindow', inputwindow, '-outputwindow',
groundtruth, '-inputfile', '"not.txt"', '-key', '"C"'])
print output