2
我有一个脚本,它位于游戏之外,读取像素,并通过“按键”,“点击”等对该信息作出反应。因此,要获取像素,我使用这样的代码Python中的GetPixel内存泄漏
def function():
a = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), x, y)
return a
为了快速获得屏幕上的像素值并让脚本快速反应。
它从一开始就很好,能够及时执行所需的所有内容,但它逐渐变慢。
我已经尝试使用其他方法这样
def function():
box = (x1, y1, x2, y2)
im = ImageOps.grayscale(ImageGrab.grab(box))
a = array(im.getcolors())
a = a.sum()
return a
这是过于缓慢确定问题的根源是GetPixel,但如果我运行一个包含这些其他方法while循环,他们不逐步执行像使用GetPixel的快速方法一样,速度越来越慢(内存泄漏)。
我使用的是之后删除的局部变量等。它是GetPixel,是问题所在。我只是不知道它的不删除的东西,怎么告诉Python来删除它,如果这甚至有可能等
您是否尝试过存储设备的内容,即'win32gui.GetDC(win32gui.GetActiveWindow())',在自己的函数中的局部变量,然后使用后删除呢? – TypeKazt
del/gc.collcet可以删除对象/收集垃圾,也可以使用gc.garbage查看是否有引用循环 – galaxyan