项目场景:
python使用mss库进行截图时候在windwos平台,连续调用5000次异常
raise ScreenShotError("gdi32.GetDIBits() failed
问题描述
python使用mss库进行截图时候在windwos平台,连续调用5000次异常
raise ScreenShotError("gdi32.GetDIBits() failed
原因分析:
单独进行截图的py并不会异常,循环多少次都不会异常,因为这时mss还是一个实例
当时当别的类初始化这个类后再进行截图,不管是不是单例模式,都不生效,都会无限创建新的mss实例,而mss这个库本身是有bug,在查阅了很多资料后发现之前有大神
https://github.com/BoboTiG/python-mss/issues/150 解决过这个问题
mss在windows并发情况下会出现此异常,但是现在我是用的mss9版本,依然有这个问题
解决方案:
提示:这里填写该问题的具体解决方案:
解决办法也很简单,降低mss版本,我降到了7.0.1,通过循环调用超过2W次未再出现此问题
此问题本身还是mss库版本内在并发场景下未资源释放有问题