python - 使用“NoneType”对象失败的多处理(pool.map)不可调用
问题描述
无法弄清楚这个错误返回multiprocessing.pool.map
。能得到一些帮助会很棒。
这是设置的简化版本:我在一个类中有两个方法。当类的对象被实例化时,该_get_topics()
方法被执行。该方法然后_execute_ners()
通过多处理执行该方法。
from multiprocessing import Pool
class NaturalCommunication:
def __init__(self,
text,
**kwargs):
self.text = text
self.topics = self._get_topics()
def _get_topics(self):
"""
Extract topics from text.
"""
p = Pool(processes=3)
data = p.map(self._execute_ners, ['ner1', 'ner2', 'ner3'])
p.close()
return data
def _execute_ners(self, ner_name:str) -> dict:
entities = {}
for i, sentence in enumerate(self.text.sents):
entities[i] = []
if ner_name == 'ner1':
# Execute ner number 1
ner = NerNumberOne(#some config files)
ner.get_entities(#some config files)
entities[i] += ner.entities #get entities return from ner1
if ner_name == 'ner2':
# Execute ner number 2
ner = NerNumberTwo(#some config files)
ner.get_entities(#some config files)
entities[i] += ner.entities #get entities return from ner2
if ner_name == 'ner3':
ner = NerNumberThree(#some config files)
ner.get_entities(#some config files)
entities[i] += ner.entities #get entities return from ner3
return entities
我相信发生的问题在某种程度上是由于返回的格式entities
。如果我更改_execute_ners()
为仅返回“字符串”,则数据变量_get_topics()
将成功填充。在这种情况下,_execute_ners()
返回一个填充了我们定义为StackExchangeEntity
对象的字典(您可以在下面的错误语句中看到返回的格式。
这是该行的错误输出data = p.map(...)
:
发生异常:MaybeEncodingError 错误发送结果:'[{0: [StackExchangeEntity(('visa', 'ner1'))], 1: [StackExchangeEntity(('time', 'ner3')), StackExchangeEntity(('time ', 'ner2'))]}]'。原因:'TypeError("'NoneType' 对象不可调用")'
这似乎是 pool.map 模块中的内部错误,还是我遗漏了什么?
解决方案
推荐阅读
- excel - 计算输入/输出的组合
- azure - Datafactory 的 DataFlow 活动不支持 Azure 存储,keyvault 出现错误“帐户是 AzureBlobStorage 的必需属性”
- python - 我想对视频中检测到的人脸进行加密以保留身份。然后对该视频进行解密以显示面孔
- r - 为完整案例设置阈值以从 R 中的多个列中删除 NA
- html - 如何更改表格中列线的边框颜色?
- python - 我正在尝试通过 python 中的 re.findall() 解析主题标签,但相邻的主题标签被排除在外
- kotlin - 错误:需要属性名称或接收器类型 - Kotlin
- php - 来自 Amazon Linux 2 (Elastic Beanstalk) 的 Laravel 工匠修补匠
- docker - 为 Docker 容器指定 ip 失败
- java - 如何在 JSP 或 Java 中将当前日期与数据库中的前一个日期进行比较?