`

python截屏 内存泄露 解决办法

 
阅读更多
http://stackoverflow.com/questions/16575193/memory-leak-python-windows-7-screenshots


抓图步骤大致如下:
hwin = win32gui.GetDesktopWindow()
width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)
hwindc = win32gui.GetWindowDC(hwin)
srcdc = win32ui.CreateDCFromHandle(hwindc)
memdc = srcdc.CreateCompatibleDC()
bmp = win32ui.CreateBitmap()    
bmp.CreateCompatibleBitmap(srcdc, width, height)
memdc.SelectObject(bmp)
memdc.BitBlt((0, 0), (width, height), srcdc, (left, top), win32con.SRCCOPY)
bmp.SaveBitmapFile(memdc, file_name) # 'screenshot.bmp'


但是如果是用于屏幕监控的,那么经过一段时间的loop,将很快耗尽内存,原因是资源没有释放

释放资源:
win32gui.DeleteObject(bmp.GetHandle())
memdc.DeleteDC()
srcdc.DeleteDC()
win32gui.ReleaseDC(hwin, hwindc) 







PS:百度了半天也没找到解决方法,直接谷粉搜搜,老外程序员还是给力
分享到:
评论

相关推荐

    Python内存泄漏和内存溢出的解决方案

    Python内存管理是一个重要的主题,尤其是对于那些运行长时间后台服务的开发者而言。虽然Python有内置的垃圾回收机制,但...通过这些方法,可以有效地防止和解决Python内存泄漏和内存溢出问题,确保后台服务的稳定运行。

    python调用DXGI实时快速截屏,是python截屏的最快版了

    本篇将详细讲解如何使用Python结合DXGI(DirectX Graphics Infrastructure)实现快速、高效的实时截屏功能。 DXGI是微软开发的一个图形接口,主要用于Windows系统上的DirectX应用程序。它提供了高效且低延迟的图像...

    解决python中显示图片的plt.imshow plt.show()内存泄漏问题

    3. **使用`ImageShow`管理器**:`matplotlib`提供了一个交互式图像显示管理器`ImageShow`,它能更好地处理窗口的生命周期,可能有助于解决内存泄漏问题。可以通过设置`matplotlib`的后端来使用这个管理器。 ```...

    谈谈如何手动释放Python的内存

    在某些情况下,开发者可能需要手动干预来释放内存,以避免内存泄漏。本文将深入探讨Python内存管理机制,以及如何手动释放内存。 Python的内存管理主要由垃圾收集器(Garbage Collector,简称GC)负责。当一个对象...

    Python-用于测量监视和分析在运行的Python程序中Python对象的内存行为的开发工具

    Development tool to measure, monitor and analyze the memory behavior of Python objects in a running Python application.

    python写的自动截屏软件,并保存至本地图片

    标题中的“python写的自动截屏软件,并保存至本地图片”表明这是一个使用Python编程语言开发的自动屏幕截图应用程序。Python以其丰富的库和易读性而受到开发者喜爱,它能方便地处理图像操作,如截图和保存。 描述...

    笨办法学Python

    《笨办法学Python》是一本非常适合初学者入门的Python编程教程。书名中的“笨办法”其实蕴含着一种教学理念,即通过大量的练习和实践,让学习者逐步掌握编程的基本概念和技能。这本书以简洁明了的方式介绍了Python...

    填坑总结:python内存泄漏排查小技巧(csdn)————程序.pdf

    本篇文章主要围绕一个实际案例,探讨如何排查和解决Python内存泄漏问题。 案例背景: 1. 服务在13号更新后,从23号开始出现内存持续上升,重启后攀升速度加快。 2. 服务在A、B两种芯片上部署,B芯片出现内存泄漏...

    Python的内存管理机制.pdf

    但同时它的缺点在于维护引用计数本身需要消耗一定的资源,尤其是当程序中出现大量的循环引用时,会因为无法释放内存而造成内存泄露。 为了解决循环引用问题,Python引入了标记清除(Mark-Sweep)机制。这种机制主要...

    粗略分析Python中的内存泄漏

    之前一直盲目的认为 Python 不会存在内存泄露, 但是眼看着上线的项目随着运行时间的增长 而越来越大的内存占用, 我意识到我写的程序在发生内存泄露, 之前 debug 过 logging 模块导致的内存泄露. 目前看来, 还有别的...

    opencv3和opencv4多线程内存泄漏问题

    opencv3和opencv4多线程内存泄漏问题:以cv::resize函数测试结果为例。 使用中可修复或者可避免内存泄漏:1)使用opencv2的版本;2)在代码中设置修复该问题.

    Python出现segfault错误解决方法

    本文分析了Python出现segfault错误解决方法。分享给大家供大家参考,具体如下: 最近python程序在运行过程中偶尔会引发系统segfault的错误,而且是在不定期不同代码段时发生的,所以单步调试没办法确定是哪一行代码...

    Python深入06——python的内存管理详解

    Python的内存管理是其高效运行的关键所在,它涉及到对象的创建、存储、引用以及释放等多个环节。Python作为一门动态类型语言,与静态类型语言如C++或Java...了解这些机制有助于编写更加高效且无内存泄漏的Python代码。

    python内存管理机制原理详解

    总的来说,Python的内存管理机制保证了程序的高效运行和内存的有效利用,同时通过垃圾回收解决了循环引用的问题,内存池则进一步优化了小对象的内存分配。理解这些机制有助于编写更高效、内存友好的Python代码。

    Python3进程内存分析器-用于运行python进程的内存分析器.zip

    Python3进程内存分析器-用于运行python进程的内存分析器.zip memory_analyzer 运行内存分析器不需要您停止进程或添加任何特殊的调试代码或标志。尽管内存分析器收集有关内存中对象的信息时您的过程(及其所有线程...

    内存泄露检查工具

    7. MemoryProfiler:对于Python开发者,有一个名为MemoryProfiler的库,可以用来分析Python脚本运行时的内存使用情况,找出可能的内存泄露点。 使用这些工具时,通常需要按照以下步骤进行: 1. 构建项目:首先,...

    解决Python中由于logging模块误用导致的内存泄露

    首先介绍下怎么发现的吧, 线上的项目日志是通过 logging 模块打到 syslog 里, 跑了一段时间后发现 syslog 的 UDP 连接超过了 8W, 没错是 8 W. 主要是 logging 模块用的不对 我们之前有这么一个需求, 就是针对每一个...

    内存泄露Demo leaky app

    内存泄露是计算机科学中一个非常重要的概念,尤其是在iOS和Android等移动应用开发中。当我们谈论“内存泄露Demo leaky app”时,我们指的是一个应用程序在使用内存后未能正确释放它,导致系统资源的浪费和可能的性能...

Global site tag (gtag.js) - Google Analytics