2017-05-26 60 views
0

我在Python中加载了一个大的word2vec语言模型。每次运行程序时,我都需要将模型加载到内存中。保留通过多个程序运行加载的语言模型

我使用shell脚本中的不同命令行参数运行相同的程序,例如,

#!/bin/bash 
python processor.py -ad 
python processor.py -td 
python processor.py -ds 

有什么我可以做的,让语言模型在内存中的程序完成后运行,或将我只需要通过不同的迭代模型加载后修改Python代码本身的循环?

+1

一旦python解释器完成执行代码,它将释放所有内存,并且无法将其恢复。除非你想创建一个单独的进程来加载你的模型,然后继续等待来自单独脚本的输入(例如通过数据报套接字),否则你必须修改'processor.py'来接受多个参数并迭代他们,执行每个没有退出... – zwer

+0

它可能是最简单的改变python程序循环选项,使用'argparse'。或者,可能会“腌制”语言模型,即将其串行化为文件供以后重复使用,但这并非总是可行或可取的。 – cdarke

回答

0

让你的Python程序从stdin开始,一次一行地输入它的输入。然后你可以做这样的事情:

cat <<EOF | python processor.py 
ad 
td 
ds 
EOF 

这是使用Bash的一个功能称为“这里的文档”。您也可以从Bash启动Python程序,并从命名管道读取它(例如),这样您可以在Bash脚本继续运行时在后台运行它,并且Bash脚本可以将新请求“提交”给它需要。

+0

我很困惑这是如何保持语言模型加载 –

+0

@Adam_G:你只运行一次Python程序,就是这样。 –

+0

它是如何重复执行模型加载后只有部分? –