【问题标题】:WorkerLost Error: Worker exited prematurely: signal 11 (SIGSEGV)WorkerLost 错误:工人提前退出:信号 11 (SIGSEGV)
【发布时间】:2019-02-05 09:48:03
【问题描述】:

我试图在这里找到答案,但没有得到我想要的答案。 所以我发布了这个问题。

import nltk
from nltk.corpus import stopwords
from sklearn.decomposition import TruncatedSVD
from sklearn.feature_extraction.text import TfidfVectorizer

stopset = set(stopwords.words('english'))
vectorizer = TfidfVectorizer(stop_words=stopset, use_idf=True, ngram_range=[1, 4])
X = vectorizer.fit_transform(document_list)
lsa = TruncatedSVD(n_components=2, n_iter=10)
lsa.fit(X)


results = []
terms = vectorizer.get_feature_names()

出于某种原因,我正在运行上述代码。 当我直接在 python 中运行上面的代码时,效果很好,我可以得到准确的结果。 但是当我在 celery 中运行上面的代码时(我在烧瓶中使用 celery),我得到了以下错误。 任何建议对我都有帮助。

【问题讨论】:

  • 看起来很像this issue on celery's github
  • 我已经检查过这个问题。但我没有得到解决方案。
  • @Fian 你对解决这个问题有什么建议吗?我对 sklearn 不太熟悉,所以我无法想象我需要为此做些什么。
  • 正如 github 问题中所述,您使用的库(通常机器学习和统计库是用 C/C++ 编写并具有 python 接口)似乎不是线程安全的,不能用于两个单独的线程。尝试在您的应用程序/芹菜中使用多进程而不是多线程。
  • 有任何例子或链接吗?这对我有很大帮助。

标签: python celery nltk


【解决方案1】:

我遇到了同样的问题,我通过将这些库的所有导入放在任务函数中而不是文件顶部来解决它。

@celery.task
def reduce_features(cik):
     from sklearn.decomposition import PCA
     # your code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多