我正在尝试从 python 中调用 Java 程序(斯坦福中文分词器)。 Java程序需要加载一个大的(100M)词典文件(辅助分词的词表),耗时12+秒。我想知道是否可以加快加载过程,更重要的是,当我需要多次调用python脚本时,如何避免重复加载?
这是代码的相关部分:
op = subprocess.Popen(['java',
'-mx2g',
'-cp',
'seg.jar',
'edu.stanford.nlp.ie.crf.CRFClassifier',
'-sighanCorporaDict',
'data',
'-testFile',
filename,
'-inputEncoding',
'utf-8',
'-sighanPostProcessing',
'true',
'ctb',
'-loadClassifier',
**'./data/ctb.gz',**
'-serDictionary',
'./data/dict-chris6.ser.gz',
'0'],
stdout = subprocess.PIPE,
stdin = subprocess.PIPE,
stderr = subprocess.STDOUT,
)
上面代码中,'./data/ctb.gz'是加载大词表文件的地方。我认为这可能与过程有关,但我对此了解不多。
最佳答案
您可以在此处使用特定于操作系统的解决方案。大多数现代操作系统都能够在内存中进行分区。例如,在 Linux 中你可以这样做
mkfs -q /dev/ram1 8192
mkdir -p /ramcache
mount /dev/ram1 /ramcache
将文件移动到该目录将大大加快 I/O
关于java - 如何避免重复加载大文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9041647/