matplotlib(Tkinker后端)崩溃多处理.process如何调用XInitThreads

2024-09-27 07:19:53 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题涉及到许多其他帖子,它们在从进程中启动X-windows时都有相同的错误消息-似乎没有一个解决方案可以工作-但首先问题是(正如我使用ipython 2.6发现的那样):

我有很多长进程,在一个python会话中使用单独的进程在parralell中运行它们是有意义的。这些过程使用matplotlib.pyplot. 但是,什么时候pyplot.show显示()或pyplot.figure公司调用()时,进程会崩溃整个python会话,并出现以下错误:

[xcb] Unknown sequence number while processing queue
[xcb] Most likely this ia a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
python2.7: xcb_io.c:259: poll_for_event: Assertion '!xcb_xlib_threads_sequence_lost' failed.
Aborted 

我能够从ipython命令行以更简单的形式重现此错误:

^{pr2}$

matplotlib.get_backend()的检查显示我正在运行TKAgg / Tkinker其他有相同错误的人也在使用Tkinker来制作一个漂亮的gui。还值得注意的是,我可以在不同的xterm中从单独的plot会话运行任意多个plot例程,而且没有问题。(给定Process命令应该创建它自己的名称空间,这似乎是一回事)。在

所以我的问题是,(在python中)哪里可以找到XIitThreads?它是如何/何时运行的?祈祷它解决了我的问题(这里还有一些类似的问题)。我确实找到了这篇文章:Threading: PyQt crashes with "unknown request in queue while dequeuing",但这是针对PyQt4后端的(我没有,也无法安装)

编辑-一个警告-如果替换pyplot.show显示()与pyplot.show显示(block=False)那么你将得到一个不会消失的窗口-这可能是pyplot.save.保存(). 在

同时,所有在Tkinter或matplotlib中寻找xcb_io调用的尝试都失败了-有人知道它们在哪里吗?在


Tags: ioplotqueue进程matplotlibwindowsshow错误

热门问题