У меня есть скрипт, который находится вне игры, считывает пиксели и реагирует на эту информацию, «нажимая клавиши», «щелкая» и т. д. Итак, чтобы получить пиксели, я использую такой код
def function():
a = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), x, y)
return a
для быстрого получения значений пикселей на экране и быстрой реакции скрипта.
Он начинается нормально, может выполнять все, что ему нужно, вовремя, но становится все медленнее.
Я определил источник проблемы как GetPixel, пытаясь использовать другие методы, подобные этому.
def function():
box = (x1, y1, x2, y2)
im = ImageOps.grayscale(ImageGrab.grab(box))
a = array(im.getcolors())
a = a.sum()
return a
которые слишком медленные, но если я запускаю цикл while, содержащий эти другие методы, они не будут постепенно выполняться все медленнее и медленнее, как это делает быстрый метод с GetPixel (утечка памяти).
Я использую локальные переменные, которые впоследствии удаляются и т. д. Проблема заключается в GetPixel. Я просто не знаю, где находится то, что он не удаляет, как сказать Python удалить его, возможно ли это вообще и т. д.
win32gui.GetDC(win32gui.GetActiveWindow())
, в локальной переменной внутри вашей функции, а затем удалить его после использования? - person TypeKazt   schedule 27.07.2016