python - 将 manager.dict 对象作为参数传递时,为什么我的代码会返回损坏的管道错误?
问题描述
运行以下函数时:
#returns list of hostIds on network;
def getHostsOnNetwork(surveyResults, hosts):
notifEnabledMacs = [host['macAddr']
for host in hosts.values()
if host['notificationEnabled']
]
macsOnNetwork = [host['mac'] for host in surveyResults]
return [host['id']
for host in hosts.values()
if host['macAddr'] in macsOnNetwork
]
我将一个manager.dict
对象作为“主机”传递。结果我收到以下错误:
Traceback (most recent call last):
File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "main.py", line 101, in notifsProducer
oldHostSet = currentHostSet
File "/home/patrick/notificationApp;/networking.py", line 82, in getHostsOnNetwork
for host in hosts.values()
File "<string>", line 2, in values
File "/usr/lib/python3.8/multiprocessing/managers.py", line 834, in _callmethod
conn.send((self._id, methodname, args, kwds))
File "/usr/lib/python3.8/multiprocessing/connection.py", line 206, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "/usr/lib/python3.8/multiprocessing/connection.py", line 411, in _send_bytes
self._send(header + buf)
File "/usr/lib/python3.8/multiprocessing/connection.py", line 368, in _send
n = write(self._handle, buf)
BrokenPipeError: [Errno 32] Broken pipe
似乎编译器正在尝试写入 manager.dict 对象,但为什么呢?我不会在函数中更改它的任何值。如何解决此错误?
任何指导表示赞赏。谢谢。
解决方案
推荐阅读
- javascript - waitForSelector with Puppeteer not responding only in headless mode
- javascript - XMLHttpRequest 在 NodeJs 中返回状态为 0 的响应“未定义”
- asp.net - ASP.NET 通过 Exchange Server 发送电子邮件使用哪个服务器证书?
- angular - 如何在angular 8 + expressjs中设置多区域子目录
- visual-studio - 在 Visual Studio 之外使用 DLL - 缺少依赖项 => 如何确定缺少哪些 DLL 以及检查哪个文件夹路径以找到它?
- voice-recognition - Mozilla-DeepSpeech:给出一个句子并获得语音识别的匹配百分比
- node.js - Babel 7:regeneratorRuntime 未定义错误
- android - 用户授予位置权限时如何检测“仅在使用应用程序时允许”权限
- java - Gradle 没有选择外部 JAR
- windows - 蟑螂数据库问题开始:无法初始化节点:无法加载命名时区