Stanford nlp 如何在线程中使用stanford解析器

Stanford nlp 如何在线程中使用stanford解析器,stanford-nlp,Stanford Nlp,您好,我想使用stanford parser wuth线程,但我不知道如何使用线程池。我希望所有线程都能这样做: LexicalizedParser.apply(中的对象) 但我不想一直创建LexicalizedParser的新对象,因为它将加载 lp=新的词汇化语法分析器(“englishPCFG.ser.gz”); 每个obj需要2秒的时间。 我能做什么 谢谢 您可以使用。 它允许每个线程保留一个解析器实例。因此,任何创建的解析器实例都不会从多个线程中使用 通常情况下,它不应该创建比您拥有的

您好,我想使用stanford parser wuth线程,但我不知道如何使用线程池。我希望所有线程都能这样做:

LexicalizedParser.apply(中的对象)

但我不想一直创建LexicalizedParser的新对象,因为它将加载 lp=新的词汇化语法分析器(“englishPCFG.ser.gz”); 每个obj需要2秒的时间。 我能做什么

谢谢

您可以使用。 它允许每个线程保留一个解析器实例。因此,任何创建的解析器实例都不会从多个线程中使用

通常情况下,它不应该创建比您拥有的CPU*内核更多的实例

对我来说,它是~4-5个实例(如果我在我的四核上禁用超线程)


p.S.与斯坦福德NLP无关。有时,糟糕的类实现包含静态字段,并以非线程安全的方式修改它们。此类实施的一般安全并行化方法为:

  • 将计算部分移动到单独的进程中
  • 启动(CPU*核心)带计算的进程数
  • 使用技术在主进程/后台进程之间进行通信
  • 你可以用。 它允许每个线程保留一个解析器实例。因此,任何创建的解析器实例都不会从多个线程中使用

    通常情况下,它不应该创建比您拥有的CPU*内核更多的实例

    对我来说,它是~4-5个实例(如果我在我的四核上禁用超线程)


    p.S.与斯坦福德NLP无关。有时,糟糕的类实现包含静态字段,并以非线程安全的方式修改它们。此类实施的一般安全并行化方法为:

  • 将计算部分移动到单独的进程中
  • 启动(CPU*核心)带计算的进程数
  • 使用技术在主进程/后台进程之间进行通信

  • 猜测为时已晚,但有了线程安全版本:

    猜测为时已晚,但有了线程安全版本:

    仍然不清楚如何使用多线程运行软件。您知道@Yasaman使用了什么标志或如何执行此操作吗?仍然不清楚如何使用多线程运行软件。你知道Yasaman使用的是什么旗帜或如何使用它吗?