缓存结果的Python IDE或模块?
我正在使用来自的nltk数据中包含的一些语料库来找出某些算法 因此,我的代码通常具有以下风格:缓存结果的Python IDE或模块?,python,caching,ide,automation,nltk,Python,Caching,Ide,Automation,Nltk,我正在使用来自的nltk数据中包含的一些语料库来找出某些算法 因此,我的代码通常具有以下风格: import re, nltk, random from nltk.corpus import reuters def find_test_and_train_data(): return [fileid for fileid in reuters.fileids() if re.match(r"^training/", fileid)], [fileid for fileid in reu
import re, nltk, random
from nltk.corpus import reuters
def find_test_and_train_data():
return [fileid for fileid in reuters.fileids() if re.match(r"^training/", fileid)], [fileid for fileid in reuters.fileids() if re.match(r"^test/", fileid)]
def generate_random_data(train_and_test_fileids):
random.seed(348) ; random.shuffle(train_and_test_fileids[0])
return train_and_test_fileids[0][2000:], train_and_test_fileids[0][:2000]
def fileid_words(fileid):
return [word.lower() for line in reuters.words(fileid) for word in line.split() if re.match('^[A-Za-z]+$', word)]
if __name__ == '__main__':
train_fileids, dev_fileids = generate_random_data(find_test_and_train_data())
train_data=fileid_words(train_fileids)
dev_data=fileid_words(dev_fileids)
因此,如果我将其运行到交互式解释器中,我就可以在train_data
、dev_data
及其相应的文件ID上执行任务,而无需重新填充变量(这是一项非常耗时的任务)
但是,我希望能够将其写入.py文件,以便保存统计上有趣的算法
我可以通过双重输入来实现这一点,例如:当我在解释器中得到一个函数时,我会将它复制并粘贴到.py文件中,但这效率很低,我失去了IDE的功能
是否有任何IDE或Python模块可以自动使Python脚本在内存中运行,或将变量值(如test\u data
)存储在db中
感谢所有建议python特有的方法是使用pickle: 您只需将变量保存到磁盘,然后重新加载即可:
import pickle
data1 = {'a': [1, 2.0, 3, 4+6j],
'b': ('string', u'Unicode string'),
'c': None}
output = open('data.pkl', 'wb')
pickle.dump(data1, output)
output.close()
input = open('data.pkl', 'rb')
data1 = pickle.load(pkl_file)
如果您想以与其他语言兼容的格式保存,请考虑JSON.
< P>另一个解决方案是使用检查模块从中获取代码字符串,并将其保存到Fiel.Py中。如果您使用inspect模块,您将能够获得代码对象和事件源代码,然后能够将原始代码转换为字符串,然后将其放入一个持久性存储(如文件)。解除勾选的速度比使用NLTK的
.words()
处理快得多?我希望如此,但是使用上面的代码进行测试应该很容易,但是它已经在持久性存储中了(尽管效率很低)。我不熟悉inspect模块,也许您可以给我一个代码示例,说明它比前面提到的更有效?