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