Python:在没有GIL的情况下绘制一些数据(matplotlib)

时间:2010-04-30 12:41:15

标签: python matplotlib parallel-processing gil

我的问题当然是GIL。在我分析数据时,最好在两者之间展示一些情节(所以等待结果并不是太无聊)

但GIL阻止了这一点(这让我开始问自己,Python首先是不是一个好主意。)

我只能显示情节,等到用户关闭它并在此之后开始计算。显然浪费时间。

我已经尝试过子进程和多处理模块,但似乎无法让它们工作。

对此有什么看法? 感谢

编辑:好的,这不是GIL而是show()。

4 个答案:

答案 0 :(得分:5)

这不是来自matplotlib或GIL的问题。

在matplotlib中您可以打开任意数量的图形,并在应用程序继续执行其他操作时将它们放在屏幕中。

您必须在交互模式下使用matplotlib。这可能是你的问题。

from matplotlib import interactive
interactive(True)

这应该位于导入的顶部

答案 1 :(得分:3)

这与GIL无关,只需修改分析代码,使其不时更新图形(例如每N次迭代)。

只有这样,如果您看到绘制图形会使分析代码过于缓慢,请将图形更新代码放在具有多处理功能的子流程中。

答案 2 :(得分:3)

我认为您需要将图表放入适当的Windowing系统,而不是依赖于内置的show代码。

也许在另一个帖子中坚持使用.show()就足够了?

GIL无关紧要 - 你有一个阻止show()调用,所以你需要先处理它。

答案 3 :(得分:2)

似乎draw()方法可以避免使用show()。

脚本中.show()留下的唯一原因是让它执行阻塞部分,以便在脚本到达结尾时图像不会消失。