[英]using data from PyObjects in Python C Extension without holding the GIL
[英]Python: Plot some data (matplotlib) without GIL
我的问题当然是GIL。 在我分析数据时,最好在两者之间展示一些情节(所以等待结果并不是太无聊)
但GIL阻止了这一点(这让我开始问自己,Python本来就是一个好主意)。
我只能显示情节,等到用户关闭它并在此之后开始计算。 显然浪费时间。
我已经尝试过子进程和多处理模块,但似乎无法让它们工作。
对这个有什么想法吗? 谢谢
编辑:好的,所以它不是GIL而是show()。
这不是来自matplotlib或GIL的问题。
在matplotlib中您可以打开任意数量的图形,并在应用程序继续执行其他操作时将它们放在屏幕中。
您必须在交互模式下使用matplotlib。 这可能是你的问题。
from matplotlib import interactive
interactive(True)
这应该是你的进口的顶部
这与GIL无关,只需修改分析代码,使其不时更新图形(例如每N次迭代)。
只有这样,如果您看到绘制图形会使分析代码过于缓慢,请将图形更新代码放在具有多处理功能的子流程中。
我认为您需要将图形放入适当的Windowing系统,而不是依赖于内置的show代码。
也许在另一个线程中坚持使用.show()就足够了?
GIL是无关紧要的 - 你有一个阻塞的show()调用,所以你需要先处理它。
似乎draw()方法可以避免使用show()。
在脚本中留下.show()的唯一原因是让它执行阻塞部分,以便在脚本到达结尾时图像不会消失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.