吉佳 发表于 2017-4-29 09:11:40

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:百度了半天也没找到解决方法,直接谷粉搜搜,老外程序员还是给力
页: [1]
查看完整版本: python截屏 内存泄露 解决办法