`

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内存管理机制中,虽然内置了垃圾回收器(Garbage Collector, GC)来自动清理不再使用的对象,但依然可能出现内存泄漏的问题。这主要体现在以下几个方面: 1. **C语言编写的底层模块**:一些Python扩展模块是...

    谈谈如何手动释放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循环中运行长时间的程序时容易发生。以下是一些可能的解决方法: 使用生成器(Generator):生成器是一种特殊的迭代器,可以迭代...

    2023 python调用DXGI实时快速截屏 最快3ms

    是python截屏的最快版了大概3ms左右,可以用在游戏实时截屏中FPS上百没啥问题 DXGI急速截屏代码,亲测非常好用,试着截取500张,1920的分辨率,文件夹好没有反应过来已经被铺满了,可怕的是,每张都是8点多M的大小...

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

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

    Python的内存管理机制.pdf

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

    详解如何减少python内存的消耗

    Python 打算删除大量涉及像C和C++语言那样的复杂内存管理。当对象离开范围,就会被自动垃圾收集器回收。然而,对于由 Python 开发的大型且长期运行的系统来说,内存管理是不容小觑的事情。 在这篇博客中,我将会分享...

    粗略分析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代码。

    解决python读取几千万行的大表内存问题

    如果用传统的方法,Python的内存会爆掉,传统的读取方式默认在内存里缓存下所有行然后再处理,内存容易溢出 解决的方法: 1)使用SSCursor(流式游标),避免客户端占用大量内存。(这个cursor实际上没有缓存下来任何...

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

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

    内存泄露Demo leaky app

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

    从Python的源码浅要剖析Python的内存管理

    Python的内存管理是其高效运行的关键之一,它涉及到对象的创建、存储和释放。通过深入理解Python源码,我们可以更好地了解这一过程。 首先,Python内存管理的架构分为多个层次。在最底层,Python依赖于操作系统提供...

    内存泄漏:Python中的隐蔽陷阱与应对策略

    ### 内存泄漏:Python中的隐蔽陷阱与应对策略 #### Python简介及特点 Python作为一种流行的高级编程语言,自1991年首次发布以来,因其简洁的语法和强大的功能而备受青睐。Python的设计哲学强调代码的可读性和简洁...

Global site tag (gtag.js) - Google Analytics