我对 matplotlib 和多重处理有疑问。
我启动第一个进程,在其中显示图像并选择一个区域,然后关闭图形。然后我启动另一个进程,在其中调用定期更新的图形函数。至此,一切正常。
然后,当我尝试使用相同的图形功能启动另一个进程时,它冻结了我的整个计算机,但后台进程仍然工作......
我只有以下错误之一(并不总是相同):
错误1:
XIO:X 服务器上出现致命 IO 错误 25(设备的 ioctl 不适当)
“:0.0”
在 4438 个请求(已知已处理 4438 个)之后,还剩下 30 个事件。 XIO:致命 IO 错误 11(资源暂时不可用)
在 X 服务器上“:0.0”
在 4443 个请求(已知已处理 4443 个)之后,还剩下 31 个事件。 [xcb] 处理队列 [xcb] 时未知序列号
这很可能是一个多线程客户端,而 XInitThreads 还没有
被称为 [xcb] 正在中止,对此感到抱歉。 Python:
../../src/xcb_io.c:274: poll_for_event: 断言
`!xcb_xlib_threads_sequence_lost' 失败。
错误2:
X 请求失败的错误:BadIDChoice(选择的资源 ID 无效)
对于此连接)失败请求的主要操作码:53
(X_CreatePixmap) 失败请求中的资源 ID:0x5600299 串行
失败请求的数量:4793 输出中的当前序列号
流:4795 XIO:致命 IO 错误 25(设备的 ioctl 不合适)
在 X 服务器上“:0.0”
在 4788 个请求(已知已处理 4788 个)之后,还剩下 31 个事件。 XIO:致命 IO 错误 25(设备的 ioctl 不合适)
X 服务器“:0.0”
在 4793 个请求(已知已处理 4793 个)之后,还剩下 32 个事件。
奇怪的是,我完全可以启动多个调用图形函数的进程,没有任何问题,这是与第一个图的耦合导致它不稳定。
当尝试调试时,我发现一个简单的fig=plt.figure()
足以使一切崩溃:事实上,任何调用plt
...
我到处读到你可以强制 matplotlib 使用agg
后端,它有助于多进程,但有些小部件不能使用它,所以我想避免这种情况。
我真的不明白为什么使用matplotlib
在不同的过程中可能会导致问题,所以如果有人可以解释原因和/或帮助我找到解决方法,那就太好了。
我刚刚遇到了一个非常类似的问题,其中我有一个并行生成绘图的类。我第一次创建该类的新实例并运行绘图函数时,一切都运行良好。但如果我创建一个新的实例和情节,一切都会冻结。
我通过编写一个 bash 脚本来修复它,该脚本将依次运行一个带有单个类实例化 + 绘图调用代码的 python 脚本。换句话说,在一个绘图调用和下一个绘图调用之间关闭 python 可以使您的工作环境变得干净,计算机不会再冻结。这不是最佳解决方案,但它有效:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)