首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nltk.corpus多线程

使用nltk.corpus多线程
EN

Stack Overflow用户
提问于 2018-11-15 14:43:02
回答 1查看 593关注 0票数 1

我想在多线程环境中访问nltk.corpus.wordnet。一旦启用多线程,synsets()之类的方法就会失败。如果我禁用它,一切都会正常的。

错误信息会改变。例如,错误可能如下所示,这在我看来非常类似于竞赛条件:

代码语言:javascript
复制
File "/home/lhk/anaconda3/envs/dlab/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py", line 1342, in synset_from_pos_and_offset
    assert synset._offset == offset

这方面还有其他问题:

第一个链接问题的解决方案是在程序分支到单个线程之前加载该语料库。我已经这样做了:wordnet.ensure_loaded()是在多线程之前调用的。

GitHub问题中的建议是在我的线程函数中导入wordnet。但这改变不了什么。

EN

回答 1

Stack Overflow用户

发布于 2018-11-18 10:26:04

解决办法是为每一个线程制作一个深层次的语料库。当然,这需要大量的内存,而且效率不高:

代码语言:javascript
复制
import copy
from nltk.corpus import wordnet as wn
wn.ensure_loaded()

# at the beginning of the multi-threaded environment
my_wn = copy.deepcopy(wn)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53321925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档