这个问题涉及到许多其他帖子,它们在从进程中启动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调用的尝试都失败了-有人知道它们在哪里吗?在
如果将.show()替换为
pyplot.save('foo.png')
,这样可以避免弹出新窗口。然后使用web浏览器显示*.png。在相关问题 更多 >
编程相关推荐