实际上我使用的字典标记器只是作为二进制文件分发的。它获取一个字符串作为输入,然后打印结果。我在python中找到了一个使用Popen
的包装器,它运行良好,但每次调用需要1000毫秒才能完成(与输入无关)。我想加快速度,因为我需要多次调用这个过程。
一个好方法是在我的python程序的整个执行期间保持进程活着,但我不知道该怎么做。
这是包装代码的一部分
_input = sentences #Actually a string with "\n" escapes
p = Popen([self._cmd_path],
shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
(stdout, stderr) = p.communicate(_input)
# Check the return code.
if p.returncode != 0:
print stderr
raise OSError('Command Failed')
_output = stdout.decode(encoding)
#...other elaborations with the output
这是我打电话的脚本:
#!/bin/sh
# Set paths
BIN=xxx/bin
CMD=xxx/cmd
LIB=xxx/lib
OPTIONS="-opt1 -opt2 -opt3"
EXAMPLER1=${CMD}/file1.perl
EXAMPLER2=${BIN}/binary-file
EXAMPLER3=${LIB}/file2
EXAMPLER4=${LIB}/file3
$EXAMPLER1 -i -a $EXAMPLER4 $* |
$EXAMPLER2 $OPTIONS $EXAMPLER3