2017-05-26 57 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

它是如何重複執行模型加載後只有部分? –