我的应用程序有一个可选的交互式提示用于调试。提示可以是IPython,也可以是简化的vanilla Python控制台(后者由我自己使用包含input
,compile
和exec
命令的简单循环实现。
现在,我的应用程序的主线程正在忙于完成必须在主线程中完成的各种(图形)操作。因此,交互式提示发生在子(非主)线程中。除了由于IPython atexit
在这种情况下var symbol = new PictureMarkerSymbol(new Uri("http://gifs.com/awesome.gif"));
处理的一些初步错误,我已经解决过,所有这些都很好,直到......
我的应用程序在任何给定的会话中做的最后一件事是打开一个显示一些诊断信息的matplotlib图。当然,它在主线程中执行此操作,因为matplotlib的后端与其他所有图形工具包一样具有唯我性,并坚持存在。即使在子线程中运行提示时,这也可以正常工作,只要它是香草提示符。但是当辅助线程运行IPython时,matplotlib图(即使它是在主线程中生成的)进入空白白色"没有响应"模式,或有时无法显示,或有时崩溃应用程序。
IPython是在做什么"聪明"将matplotlib的动作重定向到自己的线程?还是其他一些破坏我的微妙/不可见的东西?无论哪种方式,我怎么能阻止这种情况发生?