Python 多处理冻结

马可

我正在尝试运行此代码,但它返回一个错误。我不明白。什么可能导致这种情况发生,我应该如何修复/排除问题?

编码:

import pandas as pd
import spacy

dados = pd.read_csv('treino.csv')

nlp = spacy.load('pt_core_news_sm')

textos_para_tratamento = (titulos.lower() for titulos in dados['title'])

def trata_textos(doc):
   tokens_validos = []
   for token in doc:
      e_valido = not token.is_stop and token.is_alpha
      if e_valido:
         tokens_validos.append(token.text)
      if len(tokens_validos) > 2:
         return ' '.join(tokens_validos)

textos_tratados = [trata_textos(doc) for doc in nlp.pipe(textos_para_tratamento,
                                                    batch_size= 1000,
                                                    n_process = -1)]

错误信息:

运行时错误:在当前进程完成其引导阶段之前尝试启动一个新进程。

这可能意味着您没有使用 fork 来启动您的子进程,并且您忘记在主模块中使用正确的习惯用法:

  if__name__=='__main__':
     freeze_support()
        ...

如果程序不会被冻结以生成可执行文件,则可以省略“freeze_support()”行。

马克·托洛宁

错误消息告诉您重新组织代码以仅在主模块中运行一次。由于您的代码无法按照给定的方式运行,因此我只能建议进行以下重组:

import pandas as pd
import spacy

def trata_textos(doc):
   tokens_validos = []
   for token in doc:
      e_valido = not token.is_stop and token.is_alpha
      if e_valido:
         tokens_validos.append(token.text)
      if len(tokens_validos) > 2:
         return ' '.join(tokens_validos)

if __name__ == '__main__':
    dados = pd.read_csv('treino.csv')
    nlp = spacy.load('pt_core_news_sm')
    textos_para_tratamento = (titulos.lower() for titulos in dados['title'])
    textos_tratados = [trata_textos(doc) for doc in nlp.pipe(textos_para_tratamento,
                                                             batch_size= 1000,
                                                             n_process = -1)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章