Python中的GetPixel内存泄漏

2024-10-02 00:32:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,它位于游戏之外,读取像素,然后通过“按键”、“点击”等方式对信息做出反应。为了得到像素,我使用了这样的代码

def function():
    a = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), x, y)
    return a

为了快速获取屏幕上的像素值并让脚本快速反应。

它一开始很好,能够及时执行所需的一切,但速度会越来越慢。

通过尝试使用其他类似的方法,我已经将问题源标识为GetPixel

^{pr2}$

这太慢了,但是如果我运行一个包含这些其他方法的while循环,它们不会像GetPixel的fast方法那样逐渐地执行得越来越慢(内存泄漏)

我使用的是后来删除的局部变量,等等,这是GetPixel的问题。我只是不知道它没有删除的内容在哪里,如何告诉Python删除它,如果可能的话,等等


Tags: 方法代码脚本信息游戏returndef方式
1条回答
网友
1楼 · 发布于 2024-10-02 00:32:02

您应该为win32gui.GetDC的每次调用调用调用win32gui.ReleaseDC,如GetDC所述:

After painting with a common DC, the ReleaseDC function must be called to release the DC.

def function():
    hwnd = win32gui.GetActiveWindow()
    hdc  = win32gui.GetDC(hwnd)
    a = win32gui.GetPixel(hdc , x, y)
    win32gui.ReleaseDC(hwnd,hdc)
    return a

相关问题 更多 >

    热门问题