Python多处理冻结

2024-10-08 20:16:46 发布

您现在位置: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()
        ...

如果程序 不会冻结以生成可执行文件


Tags: csvinimporttokenfordocifspacy
1条回答
网友
1楼 · 发布于 2024-10-08 20:16:46

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

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)]

相关问题 更多 >

    热门问题