
python multiprocess pipe 报错“管道已关闭”的原因与解决方法
问题描述
使用 python multiprocess 模块中的 pipe 方法建立父子进程通信时,一开始运行程序就报错“管道已关闭”。
原因分析
立即学习“Python免费学习笔记(深入)”;
出现此错误的原因在于子进程在等待接收来自主进程的信息时,主进程已经退出,这导致管道被关闭。当子进程尝试读取数据时,就会触发“管道已关闭”错误。
解决方法
为了解决此问题,可以对子进程对管道接收操作进行错误处理:
# catch IOError when main process automatically exit
try:
signal = child_conn.recv()
if signal:
child_conn.close()
except EOFError as err:
print(err)添加了错误处理后,当主进程自动退出时,子进程将捕获 eoferror 异常并忽略。










