java - 如何避免重复加载大文件?

标签 java python performance process persistence

我正在尝试从 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/

相关文章:

Java8 将 [List<Object>, String] 转换为 Map<Object, String>

java - 提交新任务时取消当前任务的 ExecutorService

java - for 循环与 if-else 语句中的代码

java - Sandy-Bridge CPU 优化?

java - Java中的RS232通信问题

java - 如何在键入时设置文本字段内容的格式

python - ImportError :/usr/lib64/libcairo. so.2: undefined symbol :pixman_region32_rectangles

java - 海量数据优化INSERT

Python帮助命令

python - 在 Python 中打开文件读取时应该使用 utf8 还是 utf-8-sig?