Python 像素(x,y)在一个while循环中开始滞后

Python 像素(x,y)在一个while循环中开始滞后,python,pyautogui,Python,Pyautogui,我想检查屏幕上的像素何时改变,然后在像素改变颜色时输入键盘事件。但是大约2-4分钟后,当多次调用pyautogui.pixel()时,计算机速度会减慢 这是我的密码 import pyautogui OldC1 = None while True: NewC1 = pyautogui.pixel(750, 550) if NewC1 != OldC1: pyautogui.press('up') OldC1 = NewC1; 有没有办法克服这种滞后?我也遇

我想检查屏幕上的像素何时改变,然后在像素改变颜色时输入键盘事件。但是大约2-4分钟后,当多次调用
pyautogui.pixel()
时,计算机速度会减慢

这是我的密码

import pyautogui

OldC1 = None

while True:
   NewC1 = pyautogui.pixel(750, 550)

   if NewC1 != OldC1:
      pyautogui.press('up')

   OldC1 = NewC1;

有没有办法克服这种滞后?

我也遇到过类似的问题,我绕过这个问题的方法是直接使用PIL的函数,而不是pyautogui的包装函数:

from PIL import ImageGrab

pixelRGB = ImageGrab.grab().getpixel((x, y))

使用此函数并没有降低我的电脑速度。

我遇到过类似的问题,我绕过该问题的方法是直接使用PIL函数,而不是pyautogui的包装函数:

from PIL import ImageGrab

pixelRGB = ImageGrab.grab().getpixel((x, y))

使用此函数不会降低我的电脑速度。

问题不在于用于获取值的函数太多,而在于始终连续运行的无限循环

如果不需要时间精度,那么我建议通过类似于
sleep()

试试看:

从PIL导入ImageGrab
导入时间
OldC1=(0,0,0)
尽管如此:
时间。睡眠(.3)
NewC1=ImageGrab.grab().getpixel((750550))
如果NewC1!=OldC1:
pyautogui.press('up')
OldC1=NewC1
time.sleep(2)
将减少迭代的频率,从长远来看,这将带来更好的性能

编辑:

我没有使用
pyautogui
的像素函数来获取特定像素的RGB值,而是使用
PIL
(Python图像库)模块中的
getpixel()
,原因是
pyautogui.pixel()
函数只是
ImageGrab.grab().getpixel()的包装,由于我们正在努力提高性能,我们应该直接使用
getpixel()
,以提高性能

PS:


pyautogui.pixel()
对像素查找总数有一个限制,大约在10000左右。这可能会导致不正确的结果,如果查找值超过10000,
PIL
getpixel()
没有此阈值

问题不在于用于获取值的函数,而在于始终连续运行的无限循环

如果不需要时间精度,那么我建议通过类似于
sleep()

试试看:

从PIL导入ImageGrab
导入时间
OldC1=(0,0,0)
尽管如此:
时间。睡眠(.3)
NewC1=ImageGrab.grab().getpixel((750550))
如果NewC1!=OldC1:
pyautogui.press('up')
OldC1=NewC1
time.sleep(2)
将减少迭代的频率,从长远来看,这将带来更好的性能

编辑:

我没有使用
pyautogui
的像素函数来获取特定像素的RGB值,而是使用
PIL
(Python图像库)模块中的
getpixel()
,原因是
pyautogui.pixel()
函数只是
ImageGrab.grab().getpixel()的包装,由于我们正在努力提高性能,我们应该直接使用
getpixel()
,以提高性能

PS:


pyautogui.pixel()
对像素查找总数有一个限制,大约在10000左右。这可能会导致不正确的结果,如果查找值超过10000,
PIL
getpixel()
没有此阈值

他在一个无限循环中使用这个函数,这会减慢他的电脑速度,而不是具体的模块,他通过这个模块获得像素值。我知道这一点,但我的测试结果显示不同。不知为什么,在无限循环中运行pyautogui.pixel()会显著降低我的电脑速度,特别是接近10000次调用的限制,但ImageGrab.grab()根本没有。我让它在超过50k的调用中运行,与我开始测试时没有性能差异。他在一个无限循环中使用这个函数,这会减慢他的电脑,而不是具体的模块,他通过该模块获得像素值。我知道这一点,但我的测试结果显示不同。不知为什么,在无限循环中运行pyautogui.pixel()会显著降低我的电脑速度,特别是接近10000次调用的限制,但ImageGrab.grab()根本没有。我已经让它运行了超过50k的调用,并且与我开始测试时没有任何性能差异。