1

我想要一个 Python 可访问的函数show_image(...),它启动一个相当简单的图像查看器,其中图像被指定为(例如)一个 NumPy 数组。重要的是,我希望这个函数不要阻塞,而是让脚本继续执行,同时保持窗口的交互性。

我意识到巨大的设计缺陷和被称为全局解释器锁的所有痛苦都会阻止任何基于 Python 的 GUI 与主线程中的 Python 代码并行运行,所以我显然需要启动一个释放 GIL 并在 C/C++ 中执行所有操作的线程。

我很乐意用 Cython(或手写的 C 扩展模块)包装这样的东西,但我正在寻找合适的 GUI 解决方案。它应该是跨平台的,并且易于与 Cython 扩展一起构建(后者似乎排除了 Qt/qmake/等)。

重要的是,我希望能够以这种方式按需启动多个窗口。似乎大多数 GUI 工具包都有一些run()类似的函数,需要在主线程程序的末尾调用main(),这让我不太清楚如何多次启动一个窗口。我想我每次都可以启动一个单独的 GUI 事件循环,但这似乎是灾难的根源(我记得,至少 GTK+ 明确不支持它)。

我还要说fork()'ing 不是一种选择。

4

1 回答 1

0

我个人使用os.system("xv foo.png &"), 或任何小型图像查看器。根据详细信息,您还可以g = os.popen("xv - &", "w")将图像数据写入文件g。同样取决于细节,我有时将我的程序做成一个网络服务器(几十行代码,例如使用 Twisted),从那里提供图像,并在我的网络浏览器中查看它们。我的观点是你根本不需要任何 GUI 或多线程。

于 2013-01-21T20:35:38.960 回答